• 欢迎来到Minecraft插件百科!
  • 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
  • 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289

Dynmap:修订间差异

来自Minecraft插件百科
跳转到导航 跳转到搜索
C7w留言 | 贡献
第553行: 第553行:
这就是完整的教程了!希望能够帮助你。
这就是完整的教程了!希望能够帮助你。
===配置===
===配置===
这里我们将会介绍配置的结构和如何编辑配置。
文件 plugins/dynmap/configuration.txt 的配置为 YAML 格式,这种格式使用锁紧结构,很重要的一点就是不能含有任何TAB,只能有空格,所以你必须将正确数量的空格放置在配置之前。
仅作为参考,你可以查看这里的默认配置: https://github.com/webbukkit/dynmap/blob/recommended/src/main/resources/configuration.txt.
配置文件包含 4 部分,以部件、全局设定、世界模板、世界的顺序排列。全局设定更改渲染和Dynmap的(内部)Web服务器的表现,这是很显然的。一个示例全局设定:
<pre>
# How often a tile gets rendered (in seconds).
renderinterval: 1
</pre>
注意: 在版本 v0.20,默认的 configuration.txt file 被分离了, templates: 章节被移动到了 templates/ 目录, worlds: 章节被移动到了 worlds.txt 文件。用户不是必须更改他们现有的 configuration.txt - configuration.txt 定义的模板或世界仍然生效,并且会覆盖 templates/ 下的相同名称的模板。推荐已经使用的用户,尽快将 worlds: 章节(如果已经设置),从 configuration.txt 移动到 worlds.txt,放置以后的更新可能出现的冲突和影响。当然,现有的用户最好也把 templates: 章节从 configuration.txt 移动到新的文件 templates/custom-templates.txt。
部件(Component)
部件部分看起来像这样:
<pre>
components:
  - class: org.dynmap.ClientConfigurationComponent
  - class: org.dynmap.InternalClientUpdateComponent
    sendhealth: true
    allowwebchat: true
    webchat-interval: 5
...
</pre>
每个不换都可以认为是Dynmap的一个单独的特性,可以被单独开启或者关闭。有些不见基于其他的部件,但是我们不会深入。配置文件中的部件都以 - class: ... 开头,接着是部件的设置。
作为示例,我们会关闭处理聊天气泡的部件。这个部件看起来像这样:
<pre>
...
  - class: org.dynmap.ClientComponent
    type: chatballoon
    focuschatballoons: false
...
</pre>
我们可以通过删除这几行来关闭这个部件,但是更安全的方法是将他们变为注释。这个示例中:
<pre>
...
  - class: org.dynmap.ClientComponent
    type: chat
  #- class: org.dynmap.ClientComponent
  #  type: chatballoon
  #  focuschatballoons: false
  - class: org.dynmap.ClientComponent
    type: chatbox
    showplayerfaces: true
    messagettl: 5
...
</pre>
确保 # 之前仍然有正确的空格数。 保存配置后,重载Dynmap,刷新浏览器,聊天气泡不会再出现了。 同样的方法可以用来启用已经禁用的部件。
查看更多的部件和他们的配置可以查看部件配置。
世界与模板
在这个配置你会看到一个 world 章节(从 0.20 开始),可以在 worlds.txt 找到(之前是在 configuration.txt 的底部)。这个章节可以留空 - Dynmap将会找到服务器加载的所有世界,并提供一个默认的地图设定,基于使用 模板,定义于 templates: 章节。从 0.20 开始,模板定义从 configuration.txt 移动到了单独的文件,在 templates/ 目录中。但是之前的方式仍然生效。
关于世界设置的全面的介绍,查看世界与模板设定。
模板
默认有 3 种模板:普通,地狱和空岛。模板基于世界的环境自动选择 - normal 为普通的世界,nether 为地狱世界,skylands 为空岛世界。在 0.20 版本中,这些定义可以在 templates/ 目录找到,使用相应的名称“ templates/normal.txt,templates/nether.txt 和 templates/skylands.txt。
在 0.20,模板的名称可以使用 configuration.txt 中的 deftemplatesuffix 设定来变更。如果设置了,那么世界使用的模板的名称将会添加 - 和 deftemplatesuffix 设定的结果:所以设定 deftemplatesuffix 为 hires 将会造成 normal-hires 模板启用于所有的普通世界,nether-hires 启用于所有的地狱世界,skylands-hires 启用于所有的空岛世界。这会允许Dynmap(和其他的用户)使用预置的前缀设定,可以在 deftemplatesuffix 轻松设定。在 0.20版本,提供了 3 中默认的模板。
*默认 (normal,nether,skylands)
*lowres 模板集 (normal-lowres, nether-lowres, skylands-lowres - 提供更低解析度的地图(默认的2倍)。
*hires 模板集 (normal-hires, nether-hires, skylands-hires - 提供更高解析度的地图 - 大概是默认地图的8倍 - 'lowres' 版本用于平原和洞穴地图。
在所有的情况下,模板的定义可以在 templates/ 目录找到,使用对应的名称,加上 .txt (比如 normal-hires 可以在 templates/normal-hires.txt 找到)。
世界
配置文件中,在模板章节附近还有一个世界设置。在 0.20 版本,推荐的配置文件的位置是 worlds.txt 文件。这里我们可以指定每个世界的单独的设置。我们会使用一些例子让你理解。
基本上每个世界都有一些默认的值。 title 设置为世界的名称, template 设置为世界的环境(如果 deftemplatesuffix 在 configuration.txt 中被定义,那么有一个短横线和 deftemplatesuffix 跟随)。这个世界的模板可以覆盖这些值,但是这些世界设定里的值可以覆盖模板的设定。
如果你有 3 个世界,名称为 world, nether 和 alternative,然后你像让他们以明确的顺序显示,你可以将其放入你的配置里:
<pre>
worlds:
  - name: world
  - name: alternative
  - name: nether
</pre>
这样他们就以 world, alternative, nether的顺序出现。
更改某个世界的标题,你可以在配置添加title的配置:
<pre>
worlds:
  - name: world
    title: "My Super Awesome World"
  - name: alternative
  - name: nether
</pre>
你可以对所有的世界都这样做。
如果你想要关闭某个世界,比如世界alternative,你可以在配置添加 enable: false:
<pre>
worlds:
  - name: world
    title: "My Super Awesome World"
  - name: alternative
    enabled: false
  - name: nether
</pre>
你可以使用这个设置在你的模板里停用所有某一环境的世界。
如果你想要更改某个世界的特定的设置,你可以使用这个设置。这个设置还包含了 maps: 属性,这样你就可以指定世界使用的地图了:
<pre>
  - name: world
    title: "My Super Awesome World"
    center:
      x: 100
      y: 64
      z: 0
    maps:
      - class: org.dynmap.flat.FlatMap
        name: flat
        title: "Flat"
        prefix: flat
        colorscheme: default
</pre>
这将让这个世界,设置中心为 (100,64,0),并且只在侧边栏显示平坦地图。
最终如果你有多个世界使用相同的设置,你可以添加一个模板到 templates: 部分(或者最好添加一个自定义分模板文件到 templates/ 目录),然后指定这些世界的模板。
<pre>
templates:
  mycustomtemplate:
    enabled: true
    maps:
      - class: org.dynmap.flat.FlatMap
        name: flat
        title: "Flat"
        prefix: flat
        colorscheme: ovocean
...
worlds:
  - name: world
    template: mycustomtemplate
  - name: nether
    template: mycustomtemplate
  - name: alternative
</pre>
这里 world 和 nether 都使用 mycustomtemplate 模板,但是 alternative 会使用 normal 模板(因为这个示例中 alternative 有普通的世界环境)。
就像上面你能看见的一样,每个 FlatMap 或者 KzedMap 地图都可以设置一个特定的颜色主题。颜色主题可以在 plugins/dynmap/colorschemes/, 也可以在这里看到。一个关于这些的简介可以在颜色主题找到。
在 0.20 版本,一个新的地图种类出现了 - HDMap。这种地图种类,支持更高解析度的地图渲染,并且支持使用材质包,并且支持所有 FlatMap 和 KzedMap 的特性,但是更加灵活(允许自定义的观察角度,自定义的观察方向和缩放大小,等等)。有关配置 HDMaps 的详细信息,请查看HD Map 配置。
===基础插件设定===

2018年7月22日 (日) 07:52的版本

Dynmap 是一个像谷歌地图一样的、为 Minecraft 服务器设计的地图插件,让你可以在浏览器查看地图。

你可以使用 Dynmap 的集成的网络服务器立即上手,也可以将其部署到 Apache 等现有的网络服务器,易于使用。

Dynmap 可以使用不同的渲染器渲染你的地图,有的适用于高性能,而有的可以展示更详细的细节。

原始的项目是由 k-red 开发。

联络方式

用户相关

不使用内部服务器安装

我们猜测

  • 你对你正在使用的独立Web服务器有相当的经验
  • 你的Web服务器与CraftBukkit运行在同一台机器上
  • 你的Web服务器支持PHP (仅用于Web到Minecraft的聊天)
  • 如果你在使用Linux,你应该知道如何使用终端和chmod。

将以下信息:

  - class: org.dynmap.InternalClientUpdateComponent
    sendhealth: true
    allowwebchat: true
    webchat-interval: 5
  #- class: org.dynmap.JsonFileClientUpdateComponent
  #  writeinterval: 1
  #  sendhealth: true
  #  allowwebchat: false

更改为

  #- class: org.dynmap.InternalClientUpdateComponent
  #  sendhealth: true
  #  allowwebchat: true
  #  webchat-interval: 5
  - class: org.dynmap.JsonFileClientUpdateComponent
    writeinterval: 1
    sendhealth: true
    allowwebchat: false

关闭内部更新机制并开启json文件更新机制,这将在 writeinterval 的间隔后在你的web路径写入文件 standalone/dynmap_world.json。

将 plugins/dynmap/web 中的文件复制进你的Web服务器中的某个文件夹,将 configuration.txt 的指向 tilespath 和 webpath 更改至你放置Web文件的地方。


Linux

# tile文件放置的路径
tilespath: /path/to/web/server/dynmap/web/tiles

# web文件放置的路径
webpath: /path/to/web/server/dynmap/web

或 Windows

# tile文件放置的路径
tilespath: c:\\path\\to\\web\\server\\dynmap\\web\\tiles

# web文件放置的路径
webpath: c:\\path\\to\\web\\server\\dynmap\\web

现在重启你的Minecraft服务器。加入你的服务器并(随机)放置一些方块来激活Dynmap给你的地图生成tiles。

你也可以输入 dynmap fullrender worldname 于你的服务器控制台来渲染整个 worldname 世界。

现在刷新你的浏览器,应该在 http://mywebserver/dynmap/ 显示你的在线人数,保持更新。

故障排除

如果你没有在地图看见任何tiles,检查tiles目录来查看他们是否已经被生成。如果没有任何tiles,那么可能Minecraft没有在web路径写入tiles的权限,或者你没有正确填写 tilespath 。

如果你没有看见任何玩家或者他们没有移动,前往 http://mywebserver/standalone/dynmap_world.json ( world 是世界的名称)。你应该能看见一些代码,并且随着时间流逝刷新能看见代码的改变、 如果没有这个文件或者这个文件没有更新,那么你可能填写了错误的 webpath 。

在 Linux,如果web到Minecraft的聊天没有工作,你应该 chmod 'standalone' 文件夹到 775 或者 777:

$ chmod -R 775 standalone

这允许 sendmessage.php 创建json文件。这一步是必须的,因为是你的Web服务器创建文件而不是Minecraft服务器。

如果在IIS web到Minecraft的聊天没有运行,你可能要安装PHP。

在Linux下建立动态地图插件

我们猜测

  • 你的Minecraft服务器目录为 /opt/minecraft_server/。
  • 你安装了最新的CraftBukkit
  • 你的Minecraft服务器托管于 localhost。

安装并测试Dynmap:

  • 将文件 dynmap.jar 和文件夹 dynmap 复制到 /opt/minecraft_server/plugins/。
  • 重启你的Minecraft服务器。
  • 加入你的Minecraft服务器。
  • 放置一些方块。
  • 开启浏览器。
  • 前往 http://localhost:8123/。

你应该在左上方看到了你的地图和名字。一旦你点击了名称,地图会平移到你的位置,你应该能看见一部分生成的地图。

发布 如果你想让你的地图能被其他人访问,你需要做这两步:

  • 将 TCP 端口 8123 转发。
  • 将地图托管到大型Web服务器上,大型Web服务器必须能够访问Minecraft服务器,详细见下。

大型Web服务器 如果你正在托管一个 Apache 或者 Lighttpd 服务器,你可能想要让Dynmap地图可以被网页相同的URL访问,像 http://www.yourwebsite.com/dynmap/ 而不是 http://www.yourwebsite.com:8123/。如果是这样,你可以在下方选择你的Web服务器。

  • Debian/Ubuntu 上的 apache2: 在Debian下使用Apache建立Dynmap;
  • Arch Linux 上的 apache/httpd: 在Arch Linux下使用apache/https建立Dynmap;
  • Arch Linux 上的 lighttpd: 在Arch Linux下使用Lighttpd建立Dynmap;
  • nginx 在Centos下使用Nginx建立Dynmap (由 LukeHandle 提供);

Debian+Apache

我们猜测:

  • 你安装了 Apache2。
  • 你的 www-root 目录在: /srv/http/。
  • 你应该可以通过 http://localhost:8123/ 成功访问Dynmap。

这个示例展示了如何将你的Dynmap部署在Apache的 http://mywebserver/dynmap/。

  • 先创建文件夹 /srv/http/dynmap/.
  • 将 web 目录下的文件复制到 /srv/http/dynmap/ 的zip包。

首先,我们需要开启需要的模组,输入以下命令:

    sudo a2enmod rewrite proxy_http

首先我们必须重定向 /dynmap/up/ 和 /dynmap/standalone/ 到Dynmap的内部Web服务器。

请保证你在 /etc/apache2/sites-available/default 后有这一段内容:

    ...
        Alias /dynmap/tiles /opt/minecraft_server/plugins/dynmap/web/tiles/

        RewriteEngine on
        RewriteRule /dynmap/up/(.*) http://localhost:8123/up/$1 [P,L]
        RewriteRule /dynmap/standalone/(.*) http://localhost:8123/standalone/$1 [P,L]
    </VirtualHost>

    <Directory /opt/minecraft_server/plugins/dynmap/web/tiles/>
        Order allow,deny
        Allow from all
    </Directory>

    <Proxy http://localhost:8123/*>
        Order deny,allow
        Allow from all
    </Proxy>

重启Apache2 (sudo /etc/init.d/apache2 restart).

现在应该在 http://mywebserver/dynmap/ 显示在线玩家了。

Arch Linux+apache/httpd

我们猜测:

  • 你安装了 apache-httpd。
  • 你的 www-root 目录在: /srv/http/。
  • 你应该可以通过 http://localhost:8123/ 成功访问Dynmap。

这个示例展示了如何将你的Dynmap部署在apache-httpd的 http://mywebserver/dynmap/。

  • 先创建文件夹 /srv/http/dynmap/.
  • 将 web 目录下的文件复制到 /srv/http/dynmap/ 的zip包。

在 /etc/httpd/conf/httpd.conf,保证你在有以下几段,注意,这些语句不必相邻。

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule rewrite_module modules/mod_rewrite.so

接下来,我们必须将 /dynmap/up/ 和 /dynmap/standalone 重定向到Dynmap的内部Web服务器。编辑以下内容到 /etc/httpd/conf/httpd.conf 的末尾:

    ...
    Alias /dynmap/tiles /opt/minecraft_server/plugins/dynmap/web/tiles/

    RewriteEngine on
    RewriteRule /dynmap/up/(.*) http://localhost:8123/up/$1 [P,L]
    RewriteRule /dynmap/standalone/(.*) http://localhost:8123/standalone/$1 [P,L]

    <Directory /opt/minecraft_server/plugins/dynmap/web/tiles/>
        Order allow,deny
        Allow from all
    </Directory>

    <Proxy http://localhost:8123/*>
        Order deny,allow
        Allow from all
    </Proxy>

注意这会对所有的VirtualHost生效,如果你有多个虚拟主机,那么推荐你将这些代码放入。

重启Apache/httpd (sudo /etc/rc.d/httpd restart)

现在应该在 http://mywebserver/dynmap/ 显示在线玩家了。

Arch Linux+Lighttpd

我们猜测:

  • 你安装了 lighttpd。
  • 你的 www-root 目录在: /srv/http/。
  • 你应该可以通过 http://localhost:8123/ 成功访问Dynmap。

开始

  • 先创建文件夹 /srv/http/dynmap/.
  • 将 web 目录下的文件复制到 /srv/http/dynmap/ 的zip包。

这个示例展示了如何将你的Dynmap部署在lighthttpd的 http://mywebserver/dynmap/。

在 /etc/lighttpd/lighttpd.conf,保证以下模块开启:

    server.modules = ( "mod_access",
    "mod_rewrite",
    "mod_proxy",
    "mod_fastcgi"
    )

现在我们需要让Web服务器的tiles可用,并且将代理 /dynmap/up/重定向至Dynmap的内部服务器。将以下内容添加至 /etc/lighttpd/lighttpd.conf 的末尾:

alias.url += ( "/dynmap/tiles/" => "/home/minecraft/minecraft_server/plugins/dynmap/web/tiles/" )

url.rewrite-once += ( 
        "^/dynmap/up/(.*)" => "/up/$1",
        "^/dynmap/standalone/(.*)" => "/standalone/$1"
)

$HTTP["url"] =~ "^/up/" {
        proxy.server = ( "" => (( "host" => "127.0.0.1", "port" => 8123 )) )
}
$HTTP["url"] =~ "^/standalone/" {
        proxy.server = ( "" => (( "host" => "127.0.0.1", "port" => 8123 )) )
}

重启 lighttpd (sudo /etc/rc.d/lighttpd restart)

现在应该在 http://mywebserver/dynmap/ 显示在线玩家了。

Centos+Nginx

在 CentOS 6.X 使用 Nginx 建立 Dynmap

介绍

之前我们介绍了使用Nginx(或者Apache)来建立你的Dynmap而不是内置的Jetty服务器,如果你正在托管你自己的网站(并且已经开放了80端口),那么这将允许你将你的地图建立在 http://map.example.com/ 而不是 http://map.example.com:8123/ (设置DNS记录超出了本文的讨论范围)。

注意:这篇文章猜测你的Web服务器与Minecraft服务器是分离的,这个例子里,我使用 192.168.1.2 建立Minecraft服务器而使用 192.168.1.3 建立Nginx服务器。

如果你选择在同一个服务器运行,那么请在配置里将192.168.1.2更改为127.0.0.1 - 只是记住这可能不是最好的解决方式(这时候代理可能有用?)。

CentOS

为什么是 CentOS?

来自 Wikipedia:

CentOS(Community Enterprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定发布的源代码所编译而成。

由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。

从安装的时候,我选择了'最小安装'的ISO,接着安装任何我可能需要的模块。

我推荐安装尽可能少的东西,接着添加缺少的东西而不是一次性安装所有的东西。

CentOS ISO镜像都在这里。

x86_64 最小安装 ISO 在 /6.X/isos/x86\_64/CentOS-6.X-x86_64-minimal.iso,这与你使用的镜像相关(X替换为最近的版本 - 本文写作的时候 - 6.4 - 翻译的时候已经7.4了)。

安装CentOS并在安装的时候设置好网络而不是启动时手动设置 /etc/sysconfig/network-scripts/ifcfg-eth0 来配置你的网络。

一个静态的IP地址是非常重要的,或者使用DHCP服务器(经常是路由器)。你可能需要配置SSHd,但这不是必须的。

安装 Nginx, PHP 和 PHP-FPM

按照这里或者网上的指示安装Nginx。这样如果你安装了 x86_64 CentOS 你就可以在root登陆下使用以下命令。

rpm -ivh http://mirror.yandex.ru/epel/6/x86_64/epel-release-6-7.noarch.rpm

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

在 "配置 Nginx" 部分,我个人使用了 /var/www/map.example.com/public_html 和 /var/www/map.example.com/logs,但这决定于你。

Note: Also create a folder for the cache eg. /var/www/cache and run chown nginx:nginx /var/www/cache.

设置"站点"

在 /etc/nginx/sites-available/map.example.com 的文件处,更改为以下信息。

    proxy_cache_path  /var/www/cache levels=1:2 keys_zone=map:8m max_size=1g inactive=24h;
server {
    server_name map.example.com;
    access_log /var/www/map.example.com/logs/access.log;
    error_log /var/www/map.example.com/logs/error.log;
    root /var/www/map.example.com/public_html;

    location / {
        proxy_pass                  http://[IP OF MINECRAFT SERVER]:9999/;
        proxy_set_header            Host $host;
        proxy_cache                 map;
        proxy_cache_key "$host$uri";
        proxy_cache_valid  200 302  60m;
        proxy_cache_valid  404      10m;
        proxy_cache_use_stale       error timeout invalid_header updating http_500 http_503 http_504;
        proxy_connect_timeout 10;
    }
}

将 proxy_pass 更改为你的Dynmap服务器的IP和端口。

完成

运行这个命令: service nginx reload 来重载命令

保证 80 端口被防火墙(iptables)开放,并且公共IP有一个DNS的A记录连接到 map.example.com 域名。

打开 http://map.example.com

Nginx

这里介绍了如何使用Nginx作为外部Web服务器搭建Dynmap 网页服务(非代理服务器)。 我们推测你已经完成了以下步骤:

  • 你所安装的 Dynmap 根目录在 /srv/dynmap
  • 你正确地安装了 Nginx 服务,并且懂得如何使用它来搭建一台PHP在线聊天系统
  • 你所安装的 Dynmap 和内置网页服务器已经正确运行在 8123 端口

以下展示出 Dynmap 运行在Nginx时的默认配置文件。为了更好的进行数据处理,我特意将Nginx中的php-fpm配置命名为 "php5-fpm.sock"。

server {
    listen       80;
    server_name  minecraft.example.com;
    root         /srv/dynmap/;

    index index.html;

    access_log /var/log/nginx/minecraft.example.com-access_log;
    error_log /var/log/nginx/minecraft.example.com-error_log;

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

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_index index.php;
        fastcgi_pass php5-fpm-sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}

这些配置会运用到 Dynmap 下所有的URL行中。

如果你想使用 MultiCraft 作为 Dynmap 的后台管理系统也是极好的。

以下是使用Nginx搭建 Dynmap 时使用 MultiCraft 管理的配置:

server {
    listen       80;
    server_name  minecraft.example.com;
    root         /srv/dynmap/;

    index index.html;

    access_log /var/log/nginx/minecraft.example.com-access_log;
    error_log /var/log/nginx/minecraft.example.com-error_log;

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

    location /admin {
        alias /srv/multicraft/;
        index index.php;
    }

    location ~ ^/admin/(.*\.php)$ {
        alias /srv/multicraft/$1;
        fastcgi_pass php5-fpm-sock;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        include /etc/nginx/fastcgi_params;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_index index.php;
        fastcgi_pass php5-fpm-sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}

你需要在确保以上所有步骤正确完成以及配置项无误后,你还需要给 Dynmap 和网页服务器对 standalone/dynmap_webchat.json 文件赋予足够的读写权限用于网页在线聊天系统。

如果你们有关于Nginx+PHP5 FPM等的非 Dynmap类问题,可以前往 原作者的博客 进行详细的提问。

在Windows下建立动态地图插件

我们猜测:

  • 你的Minecraft服务器目录位于D:\minecraft_server\。
  • 你安装了最新的 CraftBukkit
  • 你的Minecraft服务器托管在 localhost。

安装并测试Dynmap:

  • 将 dynmap.jar 和文件夹 dynmap 复制到 D:\minecraft_server\plugins\.
  • (重新)启动你的Minecraft服务器
  • 加入你的Minecraft服务器。
  • 放置几个方块。
  • 开启浏览器。
  • 前往 http://localhost:8123/。

你应该看到了你的地图的名字显示在左上角。当你点击名字后,地图将会平移到你的位置,并且你应该看到了已经生成的一部分的世界。

发布

如果你想让地图能被其他的人访问,你需要做以下几步:

  • 将 TCP 端口 8123 转发。
  • 将地图托管到大型Web服务器上,大型Web服务器必须能够访问Minecraft服务器,详细见下。

大型Web服务器

如果你正在托管一个 Apache 或者 Lighttpd 服务器,你可能想要让Dynmap地图可以被网页相同的URL访问,像 http://www.yourwebsite.com/dynmap/ 而不是 http://www.yourwebsite.com:8123/。如果是这样,你可以在下方选择你的Web服务器。

  • IIS: 使用IIS的URL重写和ARR模块建立Dynmap(感谢Kekec852的帮助!);
  • IIS: 使用IIS建立Dynmap;

(这还不是一个列表啊!如果你使用了其他的服务器,并且你知道如何配置它们,请将其添加至Wiki)

IIS+URL重写+ARR模块

这个页面猜测:

  • 你基本了解如何配置和管理IIS服务器。
  • Web服务器的根目录位于 C:\Inetpub\wwwroot\。
  • 你的 IIS 和 CraftBukkit 在同一台机器运行。
  • 你安装了URL RewriteApplicationRequestRouting模块。

开始

  • 创建目录 C:\Inetpub\wwwroot\dynmap\。
  • 将仓库找到的'web'文件夹下的内容放入 C:\Inetpub\wwwroot\dynmap\。

有两种选择:

  • 创建文件夹 C:\Inetpub\wwwroot\dynmap\tiles\ 并且编辑 configuration.txt 并且保证你的 tilespath 设置设置为 C:\Inetpub\wwwroot\dynmap\tiles\。
# The path where the tile-files are placed.
tilespath: C:\Inetpub\wwwroot\dynmap\tiles

或者

  • 在IIS中创建虚拟文件夹,通过在IIS中右键Dynmap文件夹并点击 Add Virtual Directory 命名为 tiles (别名) 然后 Physical path 指向 dynmap插件文件夹/web/tiles

接着是重写的部分

  • 在IIS中选择Dynmap文件夹。点击URL Rewrite图标,接着 Add rule(s);选择 Reverse proxy。在入站规则(inbound rule)中输入 127.0.0.1:8123 并且点击ok。在询问是否启用反向代理(reverse proxy)时选择 Yes。
  • 打开你的Web文件夹 (C:\Inetpub\wwwroot\dynmap\) 开启 web.config 然后将内容更改为:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="up/(.*)" />
                    <action type="Rewrite" url="http://127.0.0.1:8123/up/{R:1}" />
                </rule>
                <rule name="ReverseProxyInboundRule2" stopProcessing="true">
                    <match url="standalone/(.*)" />
                    <action type="Rewrite" url="http://127.0.0.1:8123/standalone/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

有些版本的(7.x)的IIS不会自动给Dynmap需要的 *.json 文件分配正确的MIME类型(导致加载这些文件时出现406或者404错误,比如 Markers API)。

解决这个问题,请按照这里的指示,来将MIME类型 'application/json' 定义为 'json' 文件拓展。

更多让IIS6和IIS7正确处理 JSON 的细节,请查看

http://www.sencha.com/forum/showthread.php?33266-Some-Problem-with-JSON&p=229858&viewfull=1#post229858

IIS

这个页面猜测:

开始:

  • 创建目录 C:\Inetpub\wwwroot\dynmap\。
  • 创建目录 C:\Inetpub\wwwroot\dynmap\tiles\。
  • 将仓库找到的'web'文件夹下的内容放入 C:\Inetpub\wwwroot\dynmap\。

你现在应该有这个文件 C:\Inetpub\wwwroot\dynmap\up.aspx。

  • 前往 minecraft_server/plugins/dynmap/configuration.txt 并确保你将 tilespath 设置为 C:\Inetpub\wwwroot\dynmap\tiles\:
  # The path where the tile-files are placed.
  tilespath: C:\Inetpub\wwwroot\dynmap\tiles
  • 重启你的Minecraft服务器
  • 加入你的Minecraft服务器,随机放置一些方块,激活Dynmap生成tiles。

如果一切正常,你应该能在 C:\Inetpub\wwwroot\dynmap\tiles\ 找到一些新的 'PNG' 文件。你也可以前往 http://yourwebserver/dynmap/

这时候应该显示地图,并且也会显示不能更新(玩家位置和地图更新)的错误。

创建或打开 C:\Inetpub\wwwroot\dynmap\standalone\config.js 文件,将内容替换为如下:

    var config = {
      url: {
        configuration: 'up.aspx?path=configuration',
        update: 'up.aspx?path=world/{world}/{timestamp}',
        sendmessage: 'up.aspx?path=sendmessage',
        login: 'up.aspx?path=login',
        register: 'up.aspx?path=register',
        tiles : 'tiles/',
        markers : 'tiles/'
      }
    };

现在刷新你的浏览器。现在应该在 http://mywebserver/dynmap/ 显示在线的玩家。

故障排除

前往你的Web服务器,开启一个浏览器。前往 http://localhost/dynmap/up.aspx?path=configuration。这里应该显示一些代表你的 configuration.txt 中配置的文本,如果显示的是一些错误,那么分析这些错误。如果你不确定要怎么做,请在 IRC 联系我们或者前往论坛求助。

有些版本的(7.x)的IIS不会自动给Dynmap需要的 *.json 文件分配正确的MIME类型(导致加载这些文件时出现406或者404错误,比如 Markers API)。解决这个问题,请按照这里的指示,来将MIME类型 'application/json' 定义为 'json' 文件拓展。

更多让IIS6和IIS7正确处理 JSON 的细节,请查看 http://www.sencha.com/forum/showthread.php?33266-Some-Problem-with-JSON&p=229858&viewfull=1#post229858

通过托管服务建立Dynmap

基本上这都不会工作,因为Dynmap服务器作为Web服务器创建tiles文件通常需要文件读写权限(相对于一些允许使用FTP或者SFTP的文件传输的服务)。下面的一些链接显示了一些非官方的,一些用户已经成功的解决方案:

Xenon 托管服务;

Xenon托管服务

很多人都注意到了,在Xenon或者其他全时间的托管服务上运行Dynmap是不会工作的,并且尝试进入页面会给你一个黑屏。这个教程希望能帮助你在几步内解决这个问题,它需要你有自己的托管服务,(以我来说,1and1.com)

开始,下载最新版的Dynmap: http://webbukkit.org/jenkins/public/dynmap/dynmap-recommended-bin.zip - 然后像其他插件一样上传你的插件。

解压文件,打开你的FTP应用(FileZilla就很好)并登入你的web托管服务。你需要放入Xenon不允许的 JS 文件,到你的web托管的某个文件夹。不要忘记将 "config.js" 复制。记住到这个文件夹的URL地址(对我来说就是 www.mavbear.com/map/web/js)。

打开任意的文本编辑器,开启 "web/index.html" 文件,你会看到像这几行一样的:

<script type="text/javascript" src="js/jquery.json.js"></script>

这里需要注意 "js/jquery.json.js" - 你将会需要将其重命名为你的实际的文件夹地址,这个例子里,我是 "http://www.mavbear.com/map/web/js/jquery.json.js"。

对每一行以"js"的都这样样做,底部的 "config.js" 也需要这样。

保存 index.html 文件,上传覆盖已经出现在你的Minecraft服务器的文件。

接着打开 map.js,前往 403 行(v0.70.1,可能在新版本改变):

loadjs('js/' + type + '.js', function() {

替换为

loadjs('(YOUR URL HERE)/js/' + type + '.js', function() {

重新上传 'map.js' 文件到你的web托管服务(不是Minecraft服务器)。

这个部分是必要的,者可以让你看见地图的玩家,还能使用聊天服务,否则你将只能看见地图。

这就是完整的教程了!希望能够帮助你。

配置

这里我们将会介绍配置的结构和如何编辑配置。

文件 plugins/dynmap/configuration.txt 的配置为 YAML 格式,这种格式使用锁紧结构,很重要的一点就是不能含有任何TAB,只能有空格,所以你必须将正确数量的空格放置在配置之前。

仅作为参考,你可以查看这里的默认配置: https://github.com/webbukkit/dynmap/blob/recommended/src/main/resources/configuration.txt.

配置文件包含 4 部分,以部件、全局设定、世界模板、世界的顺序排列。全局设定更改渲染和Dynmap的(内部)Web服务器的表现,这是很显然的。一个示例全局设定:

# How often a tile gets rendered (in seconds).
renderinterval: 1

注意: 在版本 v0.20,默认的 configuration.txt file 被分离了, templates: 章节被移动到了 templates/ 目录, worlds: 章节被移动到了 worlds.txt 文件。用户不是必须更改他们现有的 configuration.txt - configuration.txt 定义的模板或世界仍然生效,并且会覆盖 templates/ 下的相同名称的模板。推荐已经使用的用户,尽快将 worlds: 章节(如果已经设置),从 configuration.txt 移动到 worlds.txt,放置以后的更新可能出现的冲突和影响。当然,现有的用户最好也把 templates: 章节从 configuration.txt 移动到新的文件 templates/custom-templates.txt。

部件(Component)

部件部分看起来像这样:

components:
  - class: org.dynmap.ClientConfigurationComponent

  - class: org.dynmap.InternalClientUpdateComponent
    sendhealth: true
    allowwebchat: true
    webchat-interval: 5
...

每个不换都可以认为是Dynmap的一个单独的特性,可以被单独开启或者关闭。有些不见基于其他的部件,但是我们不会深入。配置文件中的部件都以 - class: ... 开头,接着是部件的设置。

作为示例,我们会关闭处理聊天气泡的部件。这个部件看起来像这样:

...
  - class: org.dynmap.ClientComponent
    type: chatballoon
    focuschatballoons: false
...

我们可以通过删除这几行来关闭这个部件,但是更安全的方法是将他们变为注释。这个示例中:

...
  - class: org.dynmap.ClientComponent
    type: chat
  #- class: org.dynmap.ClientComponent
  #  type: chatballoon
  #  focuschatballoons: false
  - class: org.dynmap.ClientComponent
    type: chatbox
    showplayerfaces: true
    messagettl: 5
...

确保 # 之前仍然有正确的空格数。 保存配置后,重载Dynmap,刷新浏览器,聊天气泡不会再出现了。 同样的方法可以用来启用已经禁用的部件。

查看更多的部件和他们的配置可以查看部件配置。

世界与模板

在这个配置你会看到一个 world 章节(从 0.20 开始),可以在 worlds.txt 找到(之前是在 configuration.txt 的底部)。这个章节可以留空 - Dynmap将会找到服务器加载的所有世界,并提供一个默认的地图设定,基于使用 模板,定义于 templates: 章节。从 0.20 开始,模板定义从 configuration.txt 移动到了单独的文件,在 templates/ 目录中。但是之前的方式仍然生效。

关于世界设置的全面的介绍,查看世界与模板设定。

模板

默认有 3 种模板:普通,地狱和空岛。模板基于世界的环境自动选择 - normal 为普通的世界,nether 为地狱世界,skylands 为空岛世界。在 0.20 版本中,这些定义可以在 templates/ 目录找到,使用相应的名称“ templates/normal.txt,templates/nether.txt 和 templates/skylands.txt。

在 0.20,模板的名称可以使用 configuration.txt 中的 deftemplatesuffix 设定来变更。如果设置了,那么世界使用的模板的名称将会添加 - 和 deftemplatesuffix 设定的结果:所以设定 deftemplatesuffix 为 hires 将会造成 normal-hires 模板启用于所有的普通世界,nether-hires 启用于所有的地狱世界,skylands-hires 启用于所有的空岛世界。这会允许Dynmap(和其他的用户)使用预置的前缀设定,可以在 deftemplatesuffix 轻松设定。在 0.20版本,提供了 3 中默认的模板。

  • 默认 (normal,nether,skylands)
  • lowres 模板集 (normal-lowres, nether-lowres, skylands-lowres - 提供更低解析度的地图(默认的2倍)。
  • hires 模板集 (normal-hires, nether-hires, skylands-hires - 提供更高解析度的地图 - 大概是默认地图的8倍 - 'lowres' 版本用于平原和洞穴地图。

在所有的情况下,模板的定义可以在 templates/ 目录找到,使用对应的名称,加上 .txt (比如 normal-hires 可以在 templates/normal-hires.txt 找到)。

世界

配置文件中,在模板章节附近还有一个世界设置。在 0.20 版本,推荐的配置文件的位置是 worlds.txt 文件。这里我们可以指定每个世界的单独的设置。我们会使用一些例子让你理解。

基本上每个世界都有一些默认的值。 title 设置为世界的名称, template 设置为世界的环境(如果 deftemplatesuffix 在 configuration.txt 中被定义,那么有一个短横线和 deftemplatesuffix 跟随)。这个世界的模板可以覆盖这些值,但是这些世界设定里的值可以覆盖模板的设定。

如果你有 3 个世界,名称为 world, nether 和 alternative,然后你像让他们以明确的顺序显示,你可以将其放入你的配置里:

worlds:
  - name: world
  - name: alternative
  - name: nether

这样他们就以 world, alternative, nether的顺序出现。

更改某个世界的标题,你可以在配置添加title的配置:

worlds:
  - name: world
    title: "My Super Awesome World"
  - name: alternative
  - name: nether

你可以对所有的世界都这样做。

如果你想要关闭某个世界,比如世界alternative,你可以在配置添加 enable: false:

worlds:
  - name: world
    title: "My Super Awesome World"
  - name: alternative
    enabled: false
  - name: nether

你可以使用这个设置在你的模板里停用所有某一环境的世界。

如果你想要更改某个世界的特定的设置,你可以使用这个设置。这个设置还包含了 maps: 属性,这样你就可以指定世界使用的地图了:

  - name: world
    title: "My Super Awesome World"
    center:
      x: 100
      y: 64
      z: 0
    maps:
      - class: org.dynmap.flat.FlatMap
        name: flat
        title: "Flat"
        prefix: flat
        colorscheme: default

这将让这个世界,设置中心为 (100,64,0),并且只在侧边栏显示平坦地图。

最终如果你有多个世界使用相同的设置,你可以添加一个模板到 templates: 部分(或者最好添加一个自定义分模板文件到 templates/ 目录),然后指定这些世界的模板。

templates:
  mycustomtemplate:
    enabled: true
    maps:
      - class: org.dynmap.flat.FlatMap
        name: flat
        title: "Flat"
        prefix: flat
        colorscheme: ovocean
...
worlds:
  - name: world
    template: mycustomtemplate
  - name: nether
    template: mycustomtemplate
  - name: alternative

这里 world 和 nether 都使用 mycustomtemplate 模板,但是 alternative 会使用 normal 模板(因为这个示例中 alternative 有普通的世界环境)。

就像上面你能看见的一样,每个 FlatMap 或者 KzedMap 地图都可以设置一个特定的颜色主题。颜色主题可以在 plugins/dynmap/colorschemes/, 也可以在这里看到。一个关于这些的简介可以在颜色主题找到。

在 0.20 版本,一个新的地图种类出现了 - HDMap。这种地图种类,支持更高解析度的地图渲染,并且支持使用材质包,并且支持所有 FlatMap 和 KzedMap 的特性,但是更加灵活(允许自定义的观察角度,自定义的观察方向和缩放大小,等等)。有关配置 HDMaps 的详细信息,请查看HD Map 配置。

基础插件设定