1:将现有的 Minecraft 离线(可能是 1.16.5 左右,谁知道呢?)

1:将现有的 Minecraft 离线(可能是 1.16.5 左右,谁知道呢?)

我正在尝试在 Ubuntu 20.04 上为我的儿子安装一些 Minecraft Mods,但我被困在 Forge 上。

我已经尝试使用 Minecraft snap 和 deb 版本、来自 OpenJDK(8、11)和 Oracle(14)的一系列版本的 JRE、无头和非无头的 JRE,以及来自此存储库的大量 Forge(1.12.2)子版本: https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.12.2.html

使用从上面链接下载的 jar 安装 Forge 客户端后,我收到此错误:

[22:02:06] [main/ERROR] [LaunchWrapper]: Unable to launch java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_242] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_242] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_242] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_242] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] Caused by: java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper at java.awt.Toolkit.loadAssistiveTechnologies(Toolkit.java:807) ~[?:1.8.0_242] at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:886) ~[?:1.8.0_242] at org.lwjgl.LinuxSysImplementation.(LinuxSysImplementation.java:50) ~[lwjgl-2.9.4-nightly-20150209.jar:?] at org.lwjgl.Sys.createImplementation(Sys.java:131) ~[lwjgl-2.9.4-nightly-20150209.jar:?] at org.lwjgl.Sys.(Sys.java:116) ~[lwjgl-2.9.4-nightly-20150209.jar:?] at net.minecraft.client.Minecraft.func_71386_F(Minecraft.java:2984) ~[bib.class:?] at net.minecraft.client.main.Main.main(SourceFile:38) ~[Main.class:?] ... 6 more [22:02:06] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]: net.minecraftforge.fml.relauncher.FMLSecurityManager$ExitTrappedException [22:02:06] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]: at net.minecraftforge.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java:49) [22:02:06] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]: at java.lang.SecurityManager.checkExit(SecurityManager.java:761) [22:02:06] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]: at java.lang.Runtime.exit(Runtime.java:108) [22:02:06] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]: at java.lang.System.exit(System.java:973) [22:02:06] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]: at net.minecraft.launchwrapper.Launch.launch(Launch.java:138) [22:02:06] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]: at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

因此我搜索了这个错误“导致原因:java.awt.AWTError:未找到辅助技术:org.GNOME.Accessibility.AtkWrapper”,并找到了这篇 Ask Ubuntu 文章:

未找到辅助技术 AWTError

尝试了该文章中引用的所有选项,其中指示放置下面的 java 选项使我稍微进步了一点:

-Djavax.accessibility.assistive_technologies=" "


但是现在我收到了 Minecraft 崩溃报告: ---- Minecraft Crash Report ---- // Oops.

Time: 6/28/20 9:56 PM Description: Initializing game

java.lang.ExceptionInInitializerError at net.minecraft.client.Minecraft.func_175594_ao(Minecraft.java:680) at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:456) at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:378) at net.minecraft.client.main.Main.main(SourceFile:123) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 at org.lwjgl.opengl.LinuxDisplay.getAvailableDisplayModes(LinuxDisplay.java:951) at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:738) at org.lwjgl.opengl.Display.(Display.java:138) ... 10 more


如果有人认为这有帮助,我可以提供完整的日志和崩溃报告。
一个有趣的评论是,实际上所有高于 1.12.2 的 Forge 版本(如 1.16.1)都可以在 Ubuntu 20.04 上正常工作。不幸的是,对我来说,使用这些版本不是一个选择,因为我儿子尝试使用的某些 Mod 在高于 1.12.2 的 Forge 版本上不起作用,例如“Ancient Warfare”、“Animania”和“Chisel”。

如果你能帮助我,我将非常感激。

答案1

您是否尝试过将系统默认 Java 设置为 Java 8?我最近尝试使用 Forge 1.12.2,当您尝试从启动器启动它时,它会立即崩溃。尝试运行sudo update-alternatives --config java并输入要设置为默认值的 Java 8 编号,然后尝试再次启动 Forge。这为我解决了问题,因为 Forge 版本 1.12.2 仅与 Java 8 兼容。

答案2

有一些出色的 Minecraft Java 版模组,例如 Serene Seasons 和 Dynamic Trees,它们为运行 Minecraft Java 版 1.12.2 提供了动力。Minecraft Bedrock 用户会发现购买一套新的 Minecraft Java 版许可证非常值得,这样才能体验 Ice and Fire 等出色的模组以及多种选择。

对于那些不知道的人来说,这仅适用于Minecraft Java 版. Minecraft Bedrock 不可修改,而要修改 Minecraft Java 版,则需要使用伟大的 Minecraft锻造也是必要的。如果您只有 Minecraft Bedrock,现在是时候重新购买所有 Java 版许可证了。这是值得的。

虽然我不确定特定错误楼主报告说,我在尝试安装 Minecraft Java 版 1.12.2 时遇到了几个类似的 Java 错误。我发现从头开始使用 Java 8 执行所有步骤都适用于 Mac OSX Minecraft 服务器和 Ubuntu 20.04 和 Windows 10 客户端。

对于 Minecraft Forge 1.12.2,在安装 Minecraft 服务器、Minecraft 客户端和 Forge 时,Java 8 需要成为系统默认 Java。可以可靠且同时运行多个 Java 版本。同时运行多个版本可能比卸载现有(可能稍后)Java 更容易,因为卸载现有 Java 可能会破坏某些东西。

此外,Minecraft Java 版需要首先安装, 和至少运行一次在尝试安装 Forge 之前,服务器和客户端. 锻造厂安装程序需要使用jar,而不是“通用”jar。

以下说明详细说明如何查找、安装和选择 Java 8 作为默认值,以及如何为 Linux、Mac OSX 和 Windows 安装 Minecraft Java Edition 1.12.2 和 Forge 1.12.2。

您需要能够遵循 CLI bash 命令,在必要时使用 sudo,并了解有关用户主目录和操作系统的 Minecraft 安装目录的一些基础知识。如果您需要搜索这些方面,网上有很多支持。完成一些步骤后重新启动机器可能会有所帮助;如果进程似乎被阻止,请尝试一下。

1:将现有的 Minecraft 离线(可能是 1.16.5 左右,谁知道呢?)

要保存现有的安装世界以便稍后恢复,请将 Minecraft 安装文件夹移动到某个中立位置,例如用户主目录或文档等。所使用的文件夹可能是~/.minecraft/Library/Application Support/...或者位于“漫游目录”中,用于其他地方。使用拖放或执行类似 的操作mv ~/.minecraft ~/Documents/minecraft-1.16.5

2:在 Linux 上安装 Java 8

提供了有关查找和安装 Java 的全面说明:https://petewan.com/blog-post/install-and-manage-multiple-java-jdk-and-jre-versions-on-ubuntu-20-04/

检查已安装的 Java 版本,例如:

java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)

安装 Open JDK Java 8:

sudo apt update
sudo apt install openjdk-8-jdk

我没有使用 Oracle Java,但我想我会在这里引用它以防其他人需要它:

# sudo add-apt-repository ppa:webupd8team/java
# sudo apt install oracle-java8-installer
# sudo apt install oracle-java8-set-default

2:在 Mac OSX 上安装 Java 8

提供了有关查找和安装 Java 的全面说明:https://www.dev2qa.com/how-to-install-uninstall-multiple-java-versions-in-mac-os-by-home-brew-or-manually/

确保 HomeBrew 已安装 cask:

brew tap homebrew/cask-versions

使用 HomeBrew 搜索来发现可供安装的 Java 版本的名称:

brew search java
brew search jdk

这些命令将列出可用的 HomeBrew 安装的有用名称,例如adoptopenjdk8

  • brew search命令将列出“Formulae”和“Casks”。
  • Java 8 可能仅在 Casks 中可用。
  • 从列表中找出包含“java”或“jdk”且后跟“8”的名称。

brew cask命令不再可用,但是brew install --cask,请使用从列表中选择的名称来使用该命令brew search

brew install --cask adoptopenjdk8

此命令可能会引发错误,但有望列出其他“位置”:

Error: Cask adoptopenjdk8 exists in multiple taps:
homebrew/cask-versions/adoptopenjdk8
caskroom/versions/adoptopenjdk8

因此,请使用列出的完整路径重新尝试安装,该路径应类似于以下之一:

brew install --cask adoptopenjdk8/openjdk/adoptopenjdk8
brew install --cask homebrew/cask-versions/adoptopenjdk8

2:在 Windows 上安装 Java 8

如果使用 Windows 客户端,尽管 Java 现在是版本 16,但我发现 Java 8 仍然是 Windows 10 上使用的 Java。无需安装!Windows 太简单了 ;)

3:在 Linux 上将 Java 8 设置为系统默认设置

安装 Java 8 后,以前的 Java 可能仍是默认版本。检查系统上可用的替代方案。Java 8 列为“1.8”:

update-java-alternatives --list
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64  1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64

使用update-alternatives选择 Java 8 作为新的默认 Java。系统将提示您按数字键选择新的默认 Java:

sudo update-alternatives --config java
sudo update-alternatives --config javac

如果更新替代方案不可用,update-java-alternatives --set则可能会有用。

这可能足以将 Java 8 设置为默认值。在新的 shell 中检查当前 Java 版本:

java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

如果在达到 Java 8 时仍存在问题,设置JAVA_HOME环境变量可能会有所帮助。可以使用 确定当前 Java 的规范路径readlink。以前它可能返回如下内容:

readlink -f /usr/bin/java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java

安装 Java 8 后它看起来应该更像这样:

readlink -f /usr/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

截断/jre/bin/java/bin/java段以确定 Java 主目录。将该路径设置为JAVA_HOME将运行 Minecraft 的用户的 shell 配置文件中的环境变量:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

也就是说(这两个应该是一样的,但是这个比较好):

export JAVA_HOME='/usr/lib/jvm/java-8-openjdk-amd64'

与一些指南相反,JAVA_HOME变量确实不是引用bin目录。但bin目录应该在变量中引用PATH,如果问题仍然存在,也可以添加变量:

export PATH="$PATH:$JAVA_HOME/bin"

不需要使用/jre/bin/后缀,因为也/jre/bin应该符号链接。/bin

希望java -version现在能够按要求返回 Java 8。

3:在 Mac OSX 上将 Java 8 设置为系统默认

安装 Java 8 后,除非之前没有安装其他 Java,否则它可能仍不是系统默认版本。要检查正在使用的版本,请在新的终端中使用版本选项调用 Java:

java -version

它可能会列出类似 Java 11 的内容。Java 8 列出为“1.8”。

为了使 Java 8 成为系统默认设置,需要配置环境以报告正确的JAVA_HOME变量PATH

Java 8 现在应​​该列在已知的 Java 版本中,运行后会显示如下结果/usr/libexec/java_home

/usr/libexec/java_home -V
Matching Java Virtual Machines (4):
15.0.2, x86_64: "AdoptOpenJDK 15"   /Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home
1.8.0_292, x86_64:  "AdoptOpenJDK 8"    /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
1.6.0_65-b14-468, x86_64:   "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-468, i386: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

现在JAVA_HOME需要将环境变量设置为 Java 8(Java 1.8)列出的路径。在运行服务器的用户的 bashrc / bash_profile / profile 或 Zsh 配置文件中指定此变量,以便每次用户登录/启动时都会设置它。以下命令java_home可以帮助完成此操作:

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_292)

或者仅指定主要版本:

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

完成后,运行一个新的终端应该会导致变量中出现 Java 主目录的路径JAVA_HOME

echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

然后PATH还需要设置变量以包含特定的JAVA_HOMEbin 目录。同样,在 shell 配置文件中,设置

PATH="$PATH:$JAVA_HOME/bin"
echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin

在新的终端中单独运行 Java 时,当前使用的 Java 版本应该显示为 Java 8 (1.8):

java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)

3:在 Windows 上将 Java 8 设置为系统默认值

与以前一样,这不是必需的,因为 Windows 仍在使用 Java 8。

4:下载、安装并运行 Minecraft 服务器

1.12.2 版的官方 Minecraft 服务器 JAR 可在此处获取:https://www.minecraft.net/en-us/article/minecraft-1122-released 从该页面上的链接下载应该会提供minecraft_server.1.12.2.jar。使用新安装的 Java 8 运行 JAR 文件进行安装:

java -jar minecraft_server.1.12.2.jar

此操作对于 Linux、Mac 甚至 Windows 应该相同。

请记住,需要运行 Minecraft JAR 两次。第一次会生成一些文件,然后会因为 EULA 未签名而退出。编辑eula.txt阅读eula=true,然后重新运行以确保 Minecraft Java 版服务器运行。

我读到过,当运行 Forge 作为服务器时,Minecraft 服务器不是必需的,因为 Forge 会处理所有事情。但是,这是我采用的路线,而且对我来说很有效。

5:下载并安装 Minecraft 启动器

运行 Minecraft 作为客户端需要两个可执行文件:启动器和游戏。这很重要,因为需要在安装 Forge 之前安装游戏,并且只有玩游戏才会触发从启动器下载并安装该版本的游戏。

官方的 Minecraft 启动器可以在这里找到:https://www.minecraft.net/en-us/download 该页面有 Mac DMG 安装程序和 Windows MSI 安装程序的链接。当然,也可以直接从 Linux 上的命令行下载:

wget -o ~/Minecraft.deb https://launcher.mojang.com/download/Minecraft.deb

在 Mac 和 Windows 上正常安装启动器。对于 Ubuntu Linux,这适用于安装 DEB 包:

sudo dpkg -i Minecraft.deb

并列出启动器安装的位置:

ls /var/lib/dpkg/info/minecraft-launcher.*
dpkg -L minecraft-launcher
/usr/bin/minecraft-launcher
/usr/share/applications/minecraft-launcher.desktop
/usr/share/icons/hicolor/symbolic/apps/minecraft-launcher.svg
...
sudo apt list --installed | grep craft
minecraft-launcher/now 928 amd64 [installed,local]

在启动器中下载游戏时请耐心等待。微软只是一家资源有限的小公司,从其服务器下载游戏可能需要一些时间,甚至需要重试一次或多次。之后可能还需要重新启动。

6:玩最新的 Minecraft!

首次安装 Minecraft Launcher 时,系统上没有可用的 Minecraft 游戏。我发现,玩最新的 Minecraft 单人游戏是解锁 Minecraft Launcher 安装中先前版本的必要步骤。所以玩 Minecraft 单人游戏吧!

启动器应该提供一个播放按钮,单击它将下载、安装并运行最新的 Minecraft Java 版游戏(现在在 Java 8 中)。这在 Linux、Mac 和 Windows 上应该是相同的。

7:安装并运行 Minecraft 1.12.2 客户端

同样,在 Linux、Mac 和 Windows 上应该可以实现相同的过程。从启动器玩最新的 Minecraft 后,除了安装最新的 Minecraft 客户端外,启动器现在还应提供以前版本的 Minecraft 游戏客户端。

(显然 Minecraft 服务器安装程序也可以从这里下载,但我没有尝试过。)

对于 Windows,可能需要Settings > General > Show historical versions of Minecraft Java Edition在启动器中使用来解锁以前的版本。

  • 运行 Minecraft Launcher,但不要玩游戏
  • 切换到启动器中的“安装”选项卡
  • 点击“新安装”,然后在版本菜单中选择 1.12.2
  • 保存此新安装并选择它来玩 Minecraft 1.12.2

现在再次从启动器玩原版 Minecraft - 这次是版本 1.12.2。此操作将在客户端计算机上下载并安装 Minecraft 1.12.2。

此时,老式原版 Minecraft Java 版 1.12.2 可用作游戏客户端和服务器。我想值得通过尝试在服务器上运行 1.12.2 原版网络游戏来检查其是否有效。

8:安装并运行客户端和服务器的 Forge 1.12.2

现在到了 Forge 的时间了。

Forge 1.12.2 安装程序可在官方网站上找到。请确保单击“安装程序”图标。“通用”或类似的选项不起作用:https://files.minecraftforge.net/net/minecraftforge/forge/index_1.12.2.html

此操作并非完全简单。 重定向后避开所有链接,并等待“跳过”按钮出现在右上角。 我不会在这里详细说明点击说明,但它们可用:https://www.alphr.com/install-minecraft-forge-windows-mac/

  • 对于每个客户端和服务器,将下载的 Forge 安装程序 JAR 放在 Minecraft 目录中(这可能不是必需的,但这就是我所做的)。
  • java -version调用应该确认默认 Java 是 Java 8。
  • 在 Linux 上,继续操作之前请先运行预防sudo apt update措施sudo apt upgrade
  • 运行 Forge JAR 文件(在 Windows 上双击它就足够了):java -jar forge-1.12.2-14.23.5.2855-installer.jar
  • 当 GUI 弹出时,根据该机器的情况选择“安装客户端”或“安装服务器”。

安装后应该会有一个新的未命名为“installer”的 Forge JAR 文件:

forge-1.12.2-14.23.5.2855-installer.jar
forge-1.12.2-14.23.5.2855-installer.jar.log
forge-1.12.2-14.23.5.2855.jar

对于 Minecraft 服务器,现在应该可以运行新的 Forge JAR。这是我在 Mac OS 上启动我们家庭 Minecraft Forge 时使用的简短脚本,同时设置环境变量以防万一:

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
export PATH="$PATH:$JAVA_HOME/bin"
cd /Users/family/Minecraft
exec java -Xms512M -Xmx2048M -XX:+UseG1GC -jar forge-1.12.2-14.23.5.2855.jar nogui

对于客户端,启动 Minecraft Launcher 后,再次使用“安装”选项卡。创建一个新安装,并在菜单中找到新的 Forge 1.12.2 条目以选择发布。

从此安装玩 Minecraft 现在足以找到并访问 Forge 1.12.2 服务器。

只需将相同的 mod JAR 文件放入服务器和客户端的“mods”目录中,即可将您从游戏中获得的价值增加四倍、五倍和十倍!

相关内容