#minecraft-server #minecraft #mcpe #cli #mcbe #mc-lan-games

bin+lib mcbe-lan-advertizer

监听 Minecraft Bedrock LAN Ping 数据包并响应 Pong 数据包

2 个版本

0.1.1 2024 年 2 月 13 日
0.1.0 2023 年 1 月 10 日

#514网络编程

MIT 许可证

28KB
382

Minecraft Bedrock LAN Advertizer

关键词:MCPE、Minecraft Bedrock、朋友标签、LAN 游戏、无法加入本地专用服务器。

缩写

MCBE - Minecraft Bedrock Edition

MS - Microoft

此程序能做什么

MCBE 客户端会发送特殊的网络广播称为 Pings,并询问网络上的所有设备是否有服务器正在运行。

假设你有一部手机和一个 iPad。如果你在 iPad 上启动一个 LAN 世界,然后在手机上打开 Minecraft,你的手机将会询问 iPad 是否有服务器(Ping iPad)。iPad 会说 "是的,端口 12345"(这就是 Pong)。手机会获取 iPad 的 IP 地址和端口 12345,并尝试连接到它。

然而,你运行在电脑或笔记本电脑上的专用 Minecraft 服务器可能不会对你的手机 Ping 做出响应,原因可能是任何一种。即使在同一网络下。所以这个程序会为此服务器做这件事。这样,如果你因为家长限制/没有登录微软账户而不能使用 服务器 标签,你仍然可以加入运行在你笔记本电脑上的专用 LAN 服务器。

如果专用服务器不接收同一微软账户下的两名玩家,这也很有用。你可能想要禁用在线模式,并可能需要从设备之一注销微软账户。

此程序不能做什么

如果服务器的 IP 地址与发送 Pong 数据包的 IP 地址不同,则你将无法连接到该服务器。这是因为 IP 地址不是 Pong 数据包的一部分。相反,Pong 发送者的 IP 地址是客户端将要连接的 IP 地址。

所以,你无法使用此程序加入 some-server.net。如果你真的想这样做,我只能建议你设置代理。这超出了此应用程序的范围。

特别感谢 u/Riven5的建议 使用 jhead/phantom。正如Phantom的readme所说

Phantom README.md

Makes hosted Bedrock/MCPE servers show up as LAN servers, specifically for consoles. You can now play on remote servers (not Realms!) on your Xbox and PS4 with friends. It's like having a LAN server that's not actually there, spooky.

我与phantom没有任何关系,所以如果您对该软件有任何疑问,请以开发者喜欢的方式联系他们。他们的readme似乎有足够的说明如何使用该软件,所以您应该不会有任何问题。

运行

中继模式

优点

  • 呈现给客户端的信息将是最新的。这意味着名称、描述、玩家数量等都将与服务器上的一致。
  • 如果服务器未运行,您将不会在“朋友”标签中看到任何内容。

运行

advertize relay [ optional path to server.properties ]

# E.g:
  advertize relay bedrock_servers/creative_1/server.properties
# You have to give a path to the file itself, not just the directory,
# otherwise the file won't be found.

在此模式下,程序将在当前目录中查找一个名为server.properties的文件。在此文件中,它将查找server-port。然后它将在端口19132上启动一个UDP套接字,当它收到Ping时,它将将其转发到0.0.0.0:server-port。然后将从该处(一个Pong)将响应发送回发起Ping的程序。如果您想准确地反映在线玩家数量,这很有用。

从属性模式

缺点

  • 该应用不会检查服务器是否实际运行。因此,虽然您可能看到加入服务器的按钮,但并不能保证服务器实际上正在运行,或者服务器是否正在客户端认为的端口上运行。

优点

  • 如果服务器忽略该应用的Ping并且您在“朋友”标签中没有看到任何内容,您可以尝试此模式。有一个注意事项:请确保程序使用的端口与server.properties中的端口相同。您可以通过在服务器相同的目录中运行该应用或提供正确的文件路径来删除检查的需要。
advertize from_props [ optional path to server.properties ] proto <num> <str>

# E.g:
  advertize from_props creative_world/server.properties proto 560 '1.19.51'

在此模式下,将读取server.properties,并且仅使用其中提供的信息来响应Ping。在此模式下,在线玩家数量始终为0。查找<num><str>Bedrock协议版本号中。num是单个数字(560)和str是1.19.51的表示。

配置

在项目的github中,您将找到示例server.properties。它只包含该程序所需的配置,但不足以用于MCBE服务器。理想情况下,您将在与bedrock服务器可执行文件相同的目录中运行advertize可执行文件。

安装

目前我们建议使用cargo install。我们可能会在将来提供二进制发布版。

使用cargo

您需要安装cargo和rust才能使用此程序。

cargo install mcbe-lan-advertizer

然后

  • 导航到服务器所在的目录。
  • 在当前目录下创建一个 server.properties 文件。
  • 指定 server.propeties 的路径。

从源码构建

在您的终端中运行以下命令(Windows上的 cmd.exe)。

  1. 克隆仓库并进入其目录。您必须已安装 git 才能执行此操作。
git clone https://github.com/max-ishere/mcbe-lan-advertizer
  1. 构建应用程序。您需要安装 cargo 和 rust。
cargo build --release

# --release will optimize the app so it runs more efficiently
  1. 将可执行文件复制到方便的位置。
cp target/release/advertize (path)

您也可以通过在文件管理器中打开项目,然后是 target 和然后是 release 文件夹来完成此操作。

  1. 如果您不需要 git 仓库并且已将可执行文件保存到不同的位置,则可以删除它。
cd ..
rm mcbe-lan-advertizer

有问题?

讨论区 中提问。

依赖项

~1.5–2.2MB
~41K SLoC