Minecraft

来自 Arch Linux 中文维基

Minecraft 是一个关于破坏和放置方块的游戏。游戏一开始玩家的主要目的是搭建各种结构使自己免遭夜晚出没的怪物的攻击并生存下来,但随着游戏的进行,玩家们可以合作创造出一些不可思议的、富有想象力的东西。

该游戏有两个版本,Minecraft Java版和基岩版。Java 版是游戏的原始版本,自 2009 年开始开发。该版本可以在 Mac、Windows 和 Linux 上游玩。基岩版原为便携版,但后来被移植到不同的平台上。它当前支持 Windows 10 和 11、移动设备、Amazon FireOS 和 FireTV、Android 和 iOS、Xbox One、Playstation 4、Nintendo Switch 和 Samsung Gear VR 设备。基岩版客户端没有 Linux 的官方支持,但是基岩版服务器软件是可用的。

Java 版客户端[编辑 | 编辑源代码]

安装[编辑 | 编辑源代码]

Minecraft 客户端可以通过 minecraft-launcherAUR 包来安装。它提供了官方游戏启动器,一个用于启动它的脚本和一个特定的 .desktop 文件。这个AUR包已被 Mojang 在官网上推荐。

客户端或局域网的防火墙配置[编辑 | 编辑源代码]

大多数 Minecraft 联机世界都是由专门的 Minecraft 服务器主持。如果你想要开服,请看下方的服务器部分。

更简单的方法是允许其他人加入您当前的 Minecraft 游戏。你的 Minecraft 客户端允许其他玩家在你正在进行游戏加入。你的客户端会自动将你的游戏在 4445 端口广播。它还会监听其他玩家加入的 TCP 连接。传入的 TCP 端口会在每次你开始 Minecraft 游戏随机产生。如果你没有防火墙,这是个很有效的方法。但如果你的防火墙阻止传入的 TCP 连接,那么连接这个随机端口会变得很棘手。

总之,要允许您的客户端主持局域网游戏,您的[防火墙]需要允许以下端口:

  • 4445 UDP 端口来广播你的游戏
  • 随机的传入的 TCP 端口

参阅 [1] 以获取更多信息。

基岩版服务器[编辑 | 编辑源代码]

安装[编辑 | 编辑源代码]

Bedrock Minecraft 服务器可以通过 minecraft-bedrock-serverAUR 包安装。它提供了一个 systemd unit 文件。这个AUR包会创建一个单独的 minecraft-bedrock 用户。

启动服务器[编辑 | 编辑源代码]

你可以通过使用 systemd 或直接通过命令行运行它来启动服务器。你可以通过使用 systemd startenable minecraft-bedrock-server.service。或者,作为 minecraft-bedrock 用户在 /opt/minecraft-bedrock-server 目录下运行下列命令

$ LD_LIBRARY_PATH=. ./bedrock_server

服务器设置[编辑 | 编辑源代码]

设置文件 server.properties 包含了服务器设置和额外的文档.最重要的是, server-port 用于确定 UDP 端口,该端口会监听传入的连接。默认的 IPv4 端口是 19132,IPv6 端口是 19133。 IPv4 的 UDP 端口 43351 和 IPv6 的 UDP 端口 51885 需要被用于验证。

Java版服务器[编辑 | 编辑源代码]

安装[编辑 | 编辑源代码]

Java版Minecraft 服务器可以通过 minecraft-serverAUR 包来安装。它附带一个 systemd unit 文件,并包含一个小巧的控制脚本。

另请参阅 #可替代服务器 以了解其他可替代服务器。

部署[编辑 | 编辑源代码]

介绍[编辑 | 编辑源代码]

在安装过程中,minecraft 用户及组被引入。出于安全考虑,我们推荐并创建一个 Minecraft 特殊用户,通过在一个无特殊权限的用户下运行 Minecraft,当其他人攻破你的 Minecraft 服务器时,他们最多只能取得该用户的权限,从而保证了其他用户以及服务器的安全。 不过你需要安全地将你的用户添加到 minecraft 组,并给予该组 /srv/minecraft (默认) 目录的写入权限以允许其修改 Minecraft 服务器的设置。同时确保所有在 /srv/minecraft 目录下的文件的所有者为 minecraft 用户,或者通过其他手段让该用户拥有前面所提的目录下所有文件的读写权限。如果服务器无法访问某些文件同时没有足够的权限将该错误消息写入日志,服务器将会出错。

该软件包提供了一个 systemd 服务和一个计时器用于自动备份。默认情况下,备份位于服务器根目录下的 backup 文件夹。尽管为了保持硬盘空间不被占用过多,保险起见 10 个最近的备份是必要的 (可以通过修改 KEEP_BACKUPS 来控制备份数量)。相关的 systemd 文件分别为 minecraftd-backup.timerminecraftd-backup.service。我们可以根据自己喜好非常愉快地来 调整,例如:自定义备份时间间隔。

启动服务器[编辑 | 编辑源代码]

要启动服务器,你可以通过 systemd 或者直接从命令行。无论哪种方式,服务器都是通过一个封装在 minecraft 用户下发起的 GNU Screen 会话的形式来运行的。通过 systemd ,你可以 start 和 enable 其包含的 minecraftd.service 服务。或者,从命令行启动:

# minecraftd start

接受 EULA[编辑 | 编辑源代码]

为了运行我的世界服务器,你必须接受 EULA 。这只需要在安装后执行一次。软件包会在 /srv/minecraft/eula.txt 创建 EULA 文件。你需要编辑这个文件以声明你同意这份协议来运行服务器。你需要做的就是修改

eula=false

的值为 true 。在 /srv/minecraft/eula.txt 以下是一份已接受的 EULA 的示例:

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Sat Sep 11 11:11:11 PDT 2011
eula=true

服务端世界的防火墙配置[编辑 | 编辑源代码]

server.properties 中有三个设置,这些设置确定你的服务器会使用的端口。

server-port 确定监听传入的连接的 TCP 端口,默认为 25565

query.port 确定服务器传输信息和广告的端口 UDP,默认为 25565。 注意因为服务器和查询端口分别为 TCP 和 UDP,所以它们共用端口。若要启用服务器查询,你必须修改设置 enable-query=true

如果你选择允许远程访问管理控制台,rcon.port 将用于确定rcon的 TCP 端口,默认为 25575。若要启用 rcon, 你还需要修改设置 enable-rcon=truercon.password=....

你至少需要允许 server-port 上的传入连接。允许服务器查询和它的 query.port 也是不错的选择。另一方面,启用远程控制台访问具有安全风险,你在启用它前应该再三考虑。

上面的信息适用于官方 Minecraft 服务器。如果你使用其他服务器,请参阅它的设置的文档和细节。

参阅 [2][3] 以获取更多讯息。

服务器管理脚本[编辑 | 编辑源代码]

为了方便的控制服务器,你或许会用到 minecraftd 提供的一些脚本。它可以执行一些基本的命令,比如 startstoprestart 还可以将会话附加到 console 上。此外,它也可以通过 status 显示状态信息,使用 backup 来备份服务器世界的目录,通过 restore 来从备份中恢复世界的数据或者在服务器控制台中运行 command do-something 这条命令。

注意: 关于服务器看着他 (可以通过 minecraftd console 来访问),请记住你可以通过 ctrl+b d 来退出任何 GNU Screen 会话。

调整[编辑 | 编辑源代码]

通过编辑 /etc/conf.d/minecraft 来做一些小的调整 (比如:最大内存,线程数之类的)。

举个例子,许多高级用户倾向于启用 IDLE_SERVER 通过设置其为 true。这会启用管理脚本,当没有玩家在线超过 IDLE_IF_TIME (默认 20 分钟) 后挂起服务器。当服务器挂起时, idle_server 会通过来自 nmapncat(1) (或任意的 netcat 实现) 监听 Minecraft 的端口,并立刻监测到一个接入的连接时立刻启动服务器。虽然在挂起后一次加入会有明显的延迟,但它显著地降低了 CPU 和内存的使用量,从而使得资源分配更加合理减少系统功耗。

注意: 如果初次运行时启用了这些选项, /srv/minecraft/eula.txt 文件将不会被创建。你在初次运行时需要禁用这些设置。

可替代服务器[编辑 | 编辑源代码]

Spigot ( 区别于 Craftbukkit)[编辑 | 编辑源代码]

Spigot (也就是我们国内玩家常说的水龙头服) 是在世界上使用最广泛的 改装版 Minecraft 服务器,因此 AUR 中有一个 spigotAUR 包。这个 spigot 的 PKGBUILD 建立在 minecraft-serverAUR 包之上。这意味着,spigot 服务器也提供自己的 systemd unit 文件,spigot 脚本和相应的脚本配置文件。二进制文件叫做 spigot,有着与 minecraftd 相同的命令,其配置文件位于 /etc/conf.d/spigot 下。

请务必阅读 #部署 部分,并且在执行命令时,将 minecraftd 替换为 spigot

它和 Bukkit (也就是我们国内玩家常说的水桶服) 有些故事,而且自 Bukkit 陨落以来越来越受欢迎。

Cuberite[编辑 | 编辑源代码]

Cuberite 是一个高性能且定制度极高的 Minecraft 服务器,由 C++ 和 Lua 编写而成。它有着比 vanilla Minecraft 服务器更好的性能,不过令人遗憾的是它与最新的 Minecraft 客户端不完全兼容 (某些功能缺失或无法正常工作)。

Cuberite minecraft 服务器可以通过 cuberiteAUR 包来安装,默认情况下还提供了一个在 8080 端口的简易 web 界面,大多数服务器操作都可以在其中轻松完成。cuberite 的 PKGBUILD 同样建立在 minecraft-serverAUR 包之上。这意味着 cuberite 服务器也提供自己的 systemd unit 文件,cuberite 脚本和相应的脚本配置文件。二进制文件叫做 cuberite,有着与 minecraftd 相同的命令,其配置文件位于 /etc/conf.d/cuberite 下。

请务必阅读 #部署 部分,并且在执行命令时,将 minecraftd 替换为 cuberite

PaperMC[编辑 | 编辑源代码]

PaperMC 是一个 Minecraft 服务器, 兼容 Spigot 的优化插件。它可以通过 papermcAUR 包安装。

请务必阅读 #部署 部分, 并且在执行命令时,将 minecraftd 替换为 papermc

Forge[编辑 | 编辑源代码]

Forge 是一个被广泛使用的 Minecraft Mod API。有下列服务器的软件包可用:

请务必阅读 #部署 部分, 并且在执行命令时,将 minecraftd 替换为 forged (老版本请用 forge-x.x.xd)。

Fabric[编辑 | 编辑源代码]

Fabric 是一个轻量的,实验性的 Minecaft Mod 制作工具链.服务器的软件包包可以通过 fabric-serverAUR 安装。

请务必阅读 #部署 部分, 并且在执行命令时,将 minecraftd 替换为 fabricd

Quilt[编辑 | 编辑源代码]

Quilt 是一个开源的,社区驱动的主要用于 Minecaft 的 Mod 制作工具链。服务器的软件包可以通过 quilt-serverAUR 安装。

请务必阅读 #部署 部分, 并且在执行命令时,将 minecraftd 替换为 quiltd

Quilt 最初由 Fabric 分支而来,意味着它向后兼容大多数 Fabric 模组。

额外说明[编辑 | 编辑源代码]

  • 有几个 server wrapper 可用,它们提供从自动备份到并行管理数十个服务器的一切东西,阅读 Server Wrappers 以获得更多信息。然而 AUR 所提供的管理脚本应该能够满足你的绝大多数需求。
  • 你也许想要一个 systemd timer,比如 mapper 可以在你的世界周期性地生成地图。
  • 务必定期备份,比如,使用提供地管理脚本 (参见 #介绍) 或者 rsync

Minecraft mod 启动器[编辑 | 编辑源代码]

你可以从许多不同的启动器启动 Minecraft,这些启动器通常包含一系列的 mod 包以提高游戏的可玩性并添加 mods.

  • ATLauncher — 由社区制作的多个不同的模组包组成的 Minecraft 模组包启动器。
https://atlauncher.com/ || atlauncherAUR
  • Badlion Client — 适用于所有现代版本的 Minecraft 的 PvP 整合包。
https://client.badlion.net || badlion-clientAUR
  • GDLauncher — 用 Electron/React 编写的开源的 Minecraft 启动器。
https://gdevs.io || gdlauncher-binAUR
  • Feed The Beast — 起源于 Minecraft 中的挑战地图,由大量科技 mod 组成并逐渐演变为一个 mod 启动器。
https://www.feed-the-beast.com/ || ftbaAUR, ftba-electronAUR, feedthebeast-classicAUR
  • Lunar Client — 适用于所有现代版本的 Minecraft 的 PvP 整合包。
https://lunarclient.com || lunar-clientAUR
  • MultiMC — 用于管理可分离包关联的沙盒环境。
https://multimc.org/ || multimc5AUR and multimc-gitAUR
  • PolyMC — 具有 mod 管理等功能的高级用户启动器,最初为 MultiMC 的分支。
https://polymc.org/ || polymcAUR,polymc-qt5AUR
  • Prism Launcher — 具有模组管理等功能的高级用户启动器。最初由 MultiMC 分支而来,现在是 PolyMC 的分支。
https://prismlauncher.org/ || prismlauncherAUR, prismlauncher-qt5AUR
  • Technic Launcher — 从流行程度排名发掘 mod 的 Modpack 安装程序。
https://www.technicpack.net/ || minecraft-technic-launcherAUR



其它程序和编辑器[编辑 | 编辑源代码]

有几个 程序和编辑器 可以让你的 Minecraft 之旅更加轻松。其中最常见的是地图生成器。使用其中之一可以加载的 Minecraft 文件并渲染其位 2D 图像,展现给你一个自上而下的世界地图。

  • AMIDST — (出色的 Minecraft 接口和数据/结构追踪) (amidstAUR) 是一个有助于在 Minecraft 世界中寻找建筑,生物群系和玩家的程序。它可以绘制世界的生物群落并通过给出一个随机种子标注哪里可能是个有意思的地方,或者从现有世界读取随机种子 (这种情况下,它可以显示这个世界的玩家)。该项目有很多分支,其中最引人注目的是 “Amidst Exporter” (amidstexporterAUR) 它包含一个用于计算 1.8+ 世界海洋纪念碑位置的补丁。
https://github.com/toolbox4minecraft/amidst || amidstAUR
  • Mapcrafter — 是一个用 C++ 编写的高性能 Minecraft 地图渲染器,它将世界渲染为具有 3D 等距透视的地图。你可以在任何浏览器中查看这些地图,因此可以轻松地在一台服务器上部署它们。Mapcrafter 有一个简单的配置文件格式来指定要渲染的世界,不同的渲染模式,如白天/黑夜/洞穴,也可以从不同角度渲染世界。
http://mapcrafter.org/[失效链接 2022-09-22 ⓘ] || mapcrafter-gitAUR
  • Minutor — 是一个轻量级的 Minecraft 地图生成器。有一个简单的基于 GTK+ 的界面,用于查看你的世界。可以使用多种渲染模式,以及自定义着色模式和切割 z-levels 的功能。
http://seancode.com/minutor/ || minutor-gitAUR

故障排除[编辑 | 编辑源代码]

日志[编辑 | 编辑源代码]

Screen 日志存储在 /tmp/spigot_spigot_command_dump.txt 文件中。如果 systemctl 无法启动服务,请检查screen 日志.

Journal 日志存储在 spigot.service.

Minecraft 客户端或服务器无法启动[编辑 | 编辑源代码]

这可能是 Java 版本的问题。不同的 Minecraft 版本有不同的 JRE 需求。

Minecraft 版本 最低兼容的 JRE 版本
< 1.17 8
1.17 16
>= 1.18 17

请注意 客户端/服务端 可以使用更新版本的 Java,例如 jre-openjdk,但 Minecraft 游戏启动器(以及模组)可能只能使用 Java 8。 Minecraft 服务器和实际游戏都可以与最新版本的 Java 完美搭配,比如 jre-openjdk,但是 Minecraft 游戏启动器 (以及所有其它的 mod) 可能只适用于 Java 8。

MinecraftForge 字体损坏[编辑 | 编辑源代码]

在语言菜单中启用强制使用 Unicode 字体。

如果你无法阅读菜单选项:在主菜单中,左下角的按钮就是设置,左侧倒数第二个按钮是语言选项。强制使用 Unicode 字体 是左侧底部的选项。

无法构建 MultiMC[编辑 | 编辑源代码]

如果你尝试安装 multimc5AUR 得到了与下方类似的报错:

No CMAKE_Java_COMPILER could be found.
Tell CMake where to find the compiler by setting either the environment
variable "JAVA_COMPILER" or the CMake cache entry CMAKE_Java_COMPILER to
the full path to the compiler, or to the compiler name if it is in the
PATH.

这个报错可能是因为 Java 丢失,可以通过安装 jdk8-openjdk 修复。 如果错误并没有被修复或者一开始就已经正确安装了 Java ,可能是由于默认的环境变量使用了错误的版本:

$ archlinux-java status
Available Java environments:
  java-13-openjdk (default)
  java-8-openjdk

你可以通过 archlinux-java set <version> 设置默认的 Java 版本。

无法修改 pulseaudio 设置[编辑 | 编辑源代码]

如果你无法切换音频输出设备 (命令 pacmd list-sink-inputs 的输出中具有 DONT_MOVE 标记)那么以下 openalsoft 配置可能会有所帮助

~/.alsoftrc
[pulse]
allow-moves=yes

PipeWire 上的音频卡顿[编辑 | 编辑源代码]

OpenAL 默认使用 JACK 作为 Pipewire 的 PulseAudio 后端。如果这对你造成了问题,你可以让 OpenAL 使用 Pulse 作为替代:

~/.alsaftrc
drivers=pulse

如果你不想将所有应用程序的设置都修改,你可以设置这个环境变量 ALSOFT_DRIVERS=pulse

参见[编辑 | 编辑源代码]