[图文教程] Minecraft局域网外联机

[图文教程] Minecraft局域网外联机

Minecraft联机一直是一个令人纠结的问题。因此,安卓已经发布了许多联机平台供大家使用,使得安卓的联机难度大大降低。但是,PC版与安卓版毕竟不是同一个东西。众所周知,如果电脑版跟手机版联机PVP,电脑版用户能把手机党打上天。

由于Minecraft的房主是一个服务器,所以Minecraft的联机被限制在局域网内。一般来说,如果我们要联机,都是自己去朋友家或者请朋友来。但在大城市,这毕竟不是一个现实的办法,那么,如何远程联机呢?

(虽然网易的MC中国版提供了联机服务,但是对于我们这种反对防沉迷,追求原版的人来说,还是想要使用国际版联机)

本文为原创(转载请注明原文地址)

本文章为原创文章,于2018/8/11日编写,并非转载网络上已经过时的办法,也不是以下办法中的任意一个:

  • 使用Hamachi(收费)
  • 注册正版,创建Minecraft领域(收费)
  • 租服务器(收费)
  • 使用流量
  • 设置端口转发(某些奇葩接入机,特别是电信,不支持)
  • 其他任何收费方法

#再好的方法也有过时的可能,因此,建议不要大量转载本文#

为什么联机被限制于局域网(看不懂请跳过)

TCP是一种网络通信协议(Minecraft以及浏览器基于此),一个会话基于客户端和一个服务器(画的有点丑,不要介意)。

在通讯之前,首先建立连接。服务器不能主动连接到客户端,只能由客户端向服务器连接


接下来,客户端可以向服务器发送信息,比如在Minecraft中,获得出生点附近的方块信息。

服务器收到后,一个进程立即启动,处理该请求,并给客户端发送信息。

当然,只要连接建立,并非要客户端发送数据,服务器也可以给客户端发送数据。

Minecraft房主的游戏软件相当于一个服务器,客户端向服务器建立连接,方可联机。

此时,客户端首先给路由器发送请求,让路由器帮它连接服务器(因为客户端并不知道服务器在哪里!)。路由器相当于代理者,对服务器进行连接。此时,连接就建立好了,可以愉快地玩耍。

然而,当客户端在局域网外时,它只能对路由器(即一个单一的地址)发送请求,而不能对局域网内的多个机器使用多个IP地址。这个代表路由器的IP地址只有65536个端口,但是局域网内可能有4台机器,那么就有262144个端口。所以,客户端对路由器请求连接时,路由器并不知道要请求哪台电脑,这需要人工设置,因此,局域网外请求连接会遭到拒绝

所以,我们需要设置,比如路由器在25565端口上收到连接请求时,应该请求哪台电脑。这就是端口转发(别不看了,这篇文章不是主要讲这个)。谁知,奇葩的路由器如电信光猫F612不支持端口转发。

            卧槽??


                                        

这就是为什么远程联机难度如此之大。

本文资源下载

本文中提及的资源请在这里下载:

下载链接

准备Minecraft

请下载HMCL启动器,解压到单独文件夹,然后下载Java运行环境并安装(请注意电脑是64还是32,64位电脑务必使用64位版本),下载Minecraft 1.13以同步学习本教程。

以下以Minecraft 1.13为准,演示过程。

如何进行局域网联机(是局域网外联机的基础)

房主所做的工作:

  1.  启动Minecraft,打开世界。
  2. Esc键暂停游戏,点击“对局域网开放”
  3. 完成设置
  4. 记下端口
  5. 按Win+R,打开cmd,输入ipconfig
  6. 找到“无线局域网适配器 WLAN”,将IPv4地址和端口告诉基友。
  7. 如果房主离线,房间会关闭

基友所做的工作:

  1. 打开Minecraft
  2. 多人游戏
  3. 直接连接
  4. 按照“IPv4:端口”的格式输入地址,如“192.168.0.21:52169”
  5. 可以愉快地玩耍了

使用独立服务端(服务器软件,没有需要请跳过)

如果按照上述说明出现类似错误“无效的会话ID”,或者房主需要踢人、封号、服务器插件等更强大的功能时,或是房主不想一直在线,请使用独立服务端(但是同样仅限局域网)。此处以原版1.13为例。

请确保你安装Java

  1. 下载1.13的服务器(纯净)
  2. 下载后,将文件放于空文件夹中
  3. 如果是Win7(或者更低),在文件管理器中按下Alt键,点击“工具->文件夹选项”,取消勾选“隐藏已知文件类型的扩展名”
  4. 如果是Win10,点击上面的“查看”,勾选“文件扩展名”
  5. 在同文件夹下创建Launch.bat
  6. 右键Launch.bat,编辑。
  7. 复制下载的jar文件文件名(包含“.jar”)
  8. 在Launch.bat中加入以下内容(注意将其中大括号以及大括号内的内容替换为自己的内容)
    @echo off
    title InterestingTNT : ready
    echo 当前时间:%time%
    echo ==================我的世界服务器===================
    echo             注意:结束时输入stop存档
    echo             否则可能会丢失存档内容
    echo             PS:地图备份了吗?
    echo ==================================================
    echo 就绪
    pause
    cls
    title InterestingTNT : running
    echo 当前时间:%time%
    echo =================服务器即将启动=================
    java -jar  {你刚刚复制的文件名} -Xmx {最大内存量}
    echo =================服务器运行结束=================
    title InterestingTNT : stopped
    pause
  9. 运行Launch.bat
  10. 第一次启动应当看到如下信息,并启动失败
    [13:06:14] [main/WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498]
    [13:06:14] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
    [13:06:14] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0]
    [13:06:14] [main/WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498]
    [13:06:14] [main/WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
    [13:06:14] [main/INFO]: Loaded 0 recipes
    [13:06:14] [main/INFO]: Loaded 0 advancements
    [13:06:15] [Server thread/INFO]: Starting minecraft server version 1.13
    [13:06:15] [Server thread/WARN]: To start the server with more ram, launch it as "java -Xmx1024M -Xms1024M -jar minecraft_server.jar"
    [13:06:15] [Server thread/INFO]: Loading properties
    [13:06:15] [Server thread/WARN]: server.properties does not exist
    [13:06:15] [Server thread/INFO]: Generating new properties file
    [13:06:15] [Server thread/WARN]: Failed to load eula.txt
    [13:06:15] [Server thread/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
    [13:06:15] [Server thread/INFO]: Stopping server
    [13:06:15] [Server Shutdown Thread/INFO]: Stopping server
  11. 你会发现服务器创建了eula.txt。打开这个文件,修改最后一行为eula=true。
  12. 再次打开Launch.bat,这次应当启动成功,弹出服务器窗口(只有原版服务器会有这个窗口,其他没有),并且会有一行 Done (30.519s)! For help, type "help"
  13. 在命令行窗口中输入stop,停止服务器。
  14. 删除world文件夹中的所有内容。
  15. 按照以下模板修改server.properties
    #最大延时,尽量大一些
    max-tick-time=600000
    generator-settings=
    #允许地狱? true/false
    allow-nether=true
    #强制游戏模式?
    force-gamemode=false
    #只有白名单用户才能加入?
    enforce-whitelist=false
    #默认游戏模式 0/1/2/3
    gamemode=0
    #是否对其他管理员显示管理员的操作以及服务器状态
    broadcast-console-to-ops=true
    enable-query=false
    player-idle-timeout=0
    #难度 0/1/2/3
    difficulty=1
    #是否刷敌对生物
    spawn-monsters=true
    #管理员权限级别(一般不用修改)
    op-permission-level=4
    #是否允许PVP
    pvp=true
    snooper-enabled=true
    #世界类型:DEFAULT/FLAT/LARGEBIOME/AMPLIFIED
    level-type=DEFAULT
    #极限模式(死亡即变为旁观者)
    hardcore=false
    #允许命令方块?
    enable-command-block=true
    #最大玩家数
    max-players=20
    network-compression-threshold=256
    resource-pack-sha1=
    #世界最大大小
    max-world-size=29999984
    #端口,1024-65535
    server-port=25565
    #设为0.0.0.0即可
    server-ip=0.0.0.0
    #是否刷中立生物
    spawn-npcs=true
    #允许生存模式下使用作弊工具飞行(建议开启,否则有些MOD如电梯MOD会异常)
    allow-flight=true
    #存档文件夹名称(格式:world/名称,请将存档放于world文件夹中)
    level-name=world/test
    #最大能见度
    view-distance=12
    resource-pack=
    #是否刷友好生物
    spawn-animals=true
    #使用白名单
    white-list=false
    #生成建筑
    generate-structures=true
    #是否要求Mojang正版账号登录
    online-mode=false
    #最大建造高度(超过256将被视为256)
    max-build-height=256
    #种子
    level-seed=
    #禁止代理程序连接
    prevent-proxy-connections=false
    #描述(如果需要中文,请使用 中文转Unicode 之后填入)
    motd=A Minecraft Server
    enable-rcon=false
  16. 重新启动Launch.bat
  17. 使用ipconfig获得IP地址(与局域网联机相同)
  18. 将IP地址与server.properties中设置的端口号告诉基友。
  19. 基友使用局域网联机的方法即可加入
  20. 现在可以愉快地玩耍了。

广域网(即,局域网外)联机

请下载Evolve进行操作。

  1. 安装Evolve
  2. 打开Evolve
  3. 如果你已经拥有Evolve账号,登录,否则注册一个
  4. 如果是Win10,请执行步骤5-8,否则请跳过
  5. 打开Cortana,搜索“Device Manager”
  6. 打开“设备管理器”
  7. 展开“网络适配器”,找到Evolve Virtual Ethernet Adapter
  8. 将MAC地址设置为0
  9. 点击Evolve窗口左上角,打开Friends

房主的工作:

  1. 点击Friends窗口左上角,Create Party(创建游戏小组)
  2. 稍后你会进入此群组,请确保左下角的状态是“Connected”
  3. 点击右上角设置按钮
  4. 修改群组名称,设置为“Private Game”(私人联机),点击Update
  5. 让你的基友注册账号
  6. 点击Friends窗口顶部的Friends标题,点击“Add Friend”,输入好友名字,发送邀请
  7. 等待好友接受。
  8. 在Friends页面中右键你的好友,Invite to Party。等你的朋友接受之后,他就会加入游戏小组。
  9. 将世界对局域网开放,或打开独立服务端,然后将端口告诉好友。
  10. 给房主的提示:基友(以及其他在此游戏小组中的用户)不但可以通过你在小组网络中的IP访问到你的游戏,还可以访问到你电脑的其他端口。因此,如果你的电脑中有基于本地服务器/浏览器的软件或服务,将其关闭,或加以密码保护。如果房主作死造成任何后果,叶ID概不负责。

基友的工作:

  1. 进入游戏小组
  2. 在游戏小组聊天窗口的右边找到房主的用户名,右键,Copy IP Address。
  3. 打开Minecraft,多人游戏,直接连接,按照“粘贴IP地址:端口号”的格式输入,如“10.72.163.2:25565”
  4. 可以愉快地玩耍了。

Evolve的原理

在安装Evolve之后,房主和基友会获得Evolve网络适配器(本图片展示更真实地情况:Evolve服务器也在一个局域网内,只不过可以端口转发)

注意:软件与Windows网络组件、Evolve网络适配器之间的通信是直接的,不依赖于TCP,并且网络适配器可以掌握TCP协议,即,本来没有连接线,但是数据说明服务器/客户端已经连接。首先,当房主和基友加入游戏小组,两人的Evolve网络适配器连接到Evolve服务器(为了使得思路清晰,连接线的箭头指向TCP协议的服务器(注意:是理论上的服务器))

随后,基友的MC发出连接房主服务器的请求,该请求经Windows网络组件判定发给Evolve适配器。Evolve适配器将请求发到服务器,然后服务器发给房主的适配器,适配器继续将请求发到Minecraft服务器,Minecraft服务器再给出回应,一路传达到基友的MC,此时连接就建立了。

反馈

有问题请评论,或发送邮件以获得回答。

 

评论: 1

  1. kzs说道:

    可以搭一个ngrok反向代理,国产的一个叫 开服侠 的软件也可以

添加评论

我们将在300年后停止对游客评论的支持。请尽快注册或登录
本站现已支持评论使用Markdown来发挥个性。Markdown说明