ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

我的世界服务器搭建教程:从Java配置到联机优化的完整指南

我的世界服务器搭建教程:从Java配置到联机优化的完整指南 1. 开篇为什么我劝你自己开个《我的世界》服务器先说结论如果你只是想随便找几个人联机玩玩网易国服或者那些公共服务器其实够用了。但一旦你想和朋友稳定开黑、装mod、设权限、搞建筑存档或者只是单纯不想让房间里莫名其妙多了个熊孩子把家烧了自己搭一个《我的世界》Java版服务器几乎是绕不开的一步。我最早搭服务器是高中那会儿用一台老笔记本开的1.7.10内存只有4G卡得跟幻灯片似的但那时候一帮同学在虚拟世界里盖房子那种感觉是真不一样。后来上大学折腾1.12.2才发现这版本简直是mod玩家的天堂——大量经典整合包停在这个版本服务器端优化也比老版本成熟不少。这篇教程我会用《我的世界》1.12.2 Java版为主线因为目前搜索热度最高、兼容性最好、教程最多同时也涵盖1.20新版本的差异点尽量让不同需求的人都能抄作业。我尽量把步骤拆得细一点Java怎么装、服务端怎么下、配置怎么填、别人怎么加进来、卡了怎么优化全程尽量说人话。就算你完全没接触过服务器概念只要照着做也能开起来。如果你已经是个老手那可以直接跳到第4节看联机和排查部分那些坑我替你踩过了。2. 搭建前的准备版本选择、硬件门槛与服务端区别2.1 为什么1.12.2经久不衰新版本又该怎么选很多新手上来就问“我要不要直接上最新的1.21”这个问题的答案完全取决于你想怎么玩。如果你只是想体验原版的新内容、新生物、新地形那用最新版没问题。但如果你打算装mod、做整合包那1.12.2的选择范围真的多到离谱从科技线到魔法线再到冒险线几乎所有经典mod都有对应版本兼容性已经被社区磨平了遇到问题搜一下就有人解答。更关键的是1.12.2的服务器端在性能和稳定性上非常成熟。Paper、Spigot这些第三方服务端优化版对1.12.2的优化已经做得极其到位加上大量可调的配置项即使你的电脑配置一般也能带起七八个人的小服务器。相比之下新版服务端的数据包机制、区块加载方式变化很大优化方案还在持续迭代中新手一上来就碰新版服务端踩坑概率会高不少。我的建议很简单要玩mod选1.12.2要玩原版纯生存可以选最新的稳定版但如果你是为了学习开服的整个流程1.12.2是最不容易劝退的版本。毕竟先把服务器开起来比什么都重要。2.2 电脑配置到底要多高别被“服务器”三个字吓住很多人一听“服务器”就觉得需要一台机架式机器其实完全不是这个概念。用小电脑开《我的世界》服务器本质上就是把你的电脑当作主机其他玩家通过网络连接进来。官方服务端是Java程序吃的是CPU单核性能和内存显卡基本不参与计算。按我的实测经验内存低于4G的机器只能带3人以内非常勉强8G内存可以流畅带5-8人配个Paper核心加适度优化20人左右也撑得住16G内存的话开个1.12.2整合包服务器加一群人玩基本没什么压力。CPU方面主频越高越好因为《我的世界》的实体运算、区块生成都是单线程密集型任务2.5GHz以上的四核处理器就能跑得比较舒服不需要追求核心数多。有个特别容易忽略的点Java本身要占用内存操作系统也要占所以你电脑物理内存8G的话建议最多给服务器分4G别全塞进去。不然你自己开个客户端游戏再加服务器进程内存瞬间爆掉卡成PPT。这一点我自己最开始就吃过亏后来学乖了——开服前先打开任务管理器看一眼内存占用心里要有数。2.3 官方原版、Spigot/Paper、Forge到底选哪个这是新手最容易懵的地方。我先用一句话概括三者的关系官方原版服务端Vanilla最纯净只有原版玩法不能装插件也不能装mod。Spigot/Paper插件服务端支持装各种管理插件比如领地、商店、传送、登录验证但不支持Forge mod。Forge服务端mod服务端支持装各类玩法mod比如工业、魔法、冒险类适合整合包玩家。如果你是想开个纯净生存服建议直接上Paper因为它带了大量性能优化还能装基础插件。如果你的朋友都想玩某个整合包那就必须用Forge服务端而且所有人的mod列表必须一致版本也得一模一样。这里有个特别重要的提醒不要混着用。有些新手想既装mod又装插件结果把Forge和Spigot的核心文件混在一起启动必报错。想要mod和插件共存得装Magma或Arclight这类的混合核心但这属于进阶玩法稳定性和兼容性问题非常多新手还是老老实实选一条路走。3. 环境配置与服务端下载最关键也最容易出错的一步3.1 Java版本选错一切白搭搭建《我的世界》服务器Java环境是门槛中的门槛90%的启动失败都是Java版本不对导致的。尤其是1.12.2这个版本它需要的是Java 8不是最新的Java 17、Java 21。很多新手直接去装了最新版Java结果服务端一跑就报错怎么排查都找不到原因。判断方法很简单打开命令行输入java -version如果显示的是1.8.0_xxx那就对了如果显示的是17.0.x或者更高那就要去装Java 8。注意装了新版本Java不代表老版本就能用需要单独安装Java 8并在启动脚本里指定路径或者把Java 8加入系统环境变量。在Windows系统上我建议去Adoptium官网下载OpenJDK 8版本这是目前最省心的Java发行版一直在维护安全更新比Oracle官方版本更适合个人用户。安装时注意勾选“设置JAVA_HOME环境变量”这个选项这样后续写启动脚本会更简单。Mac用户可以直接用Homebrew安装openjdk8不过路径配置需要手工处理建议先搜索一下对应教程。还有一个坑如果你电脑上既装了Java 8又装了Java 17系统默认可能走的是新版本。解决方法是把Java 8的路径在环境变量里提前或者写启动脚本时直接用完整路径指定Java比如C:\Program Files\AdoptOpenJDK\jdk-8.0.392.08-hotspot\bin\java.exe -jar server.jar这样最稳妥。3.2 服务端文件去哪儿下载别下到广告网站服务端的下载渠道看起来五花八门实际上靠谱的就那么几个。官方原版服务端去Minecraft官网的“Download Server”页面就能下文件名一般是server.jar。Paper服务端去PaperMC官网下载选择对应游戏版本后会生成一个下载链接。Forge服务端去Forge官网选择1.12.2版本然后点击“Installer”注意要选“Server”而不是“Client”。下载完服务端文件后建议专门建一个文件夹比如D:\MCServer把下载好的jar文件放进去。这一步看似不起眼但太重要了——很多人图省事把服务端文件散落在桌面、下载目录之后想找easily or配置文件根本找不到。开服是一个持续的事情文件夹结构最好从一开始就规划好我后面讲备份策略时会再提。首次启动的时候直接双击jar文件是没有用的。正确做法是在文件夹里打开命令行Windows上在资源管理器地址栏输入cmd回车然后执行java -jar server.jar。这时系统会提示需要同意最终用户许可协议去文件夹里找到eula.txt把里面的eulafalse改成eulatrue保存后再重新启动服务端才会正式运行。提示eulatrue意味着你同意Mojang的最终用户许可协议。这句话本身没什么好怕的个人开服不涉及商业用途就没问题但不要把它理解成所有限制都解除了开服时还是要注意别用服务器做违规的牟利行为。3.3 第一次启动盯住这些输出信息服务端第一次启动时会在当前目录下生成一堆默认文件包括server.properties核心配置文件、ops.json管理员列表、whitelist.json白名单、logs文件夹日志记录、world文件夹地图数据等等。整个过程可能需要一两分钟主要时间花在生成初始区块上。启动过程中命令行会滚动大量日志。新手最容易慌的地方是看到WARN警告就以为出错了其实很多警告只是提示“这个功能在旧版本中存在新版本已弃用”之类不影响运行。真正需要关心的是有没有出现ERROR或者Exception尤其是一长串堆栈信息跟着出来的场景。还有一个判断服务器是否成功启动的方法看日志里是否出现“Done (x.xxxs)!”这一行。只要出现了这行字就说明服务端核心已经成功加载完玩家可以连入了。如果卡在“Preparing spawn area”很久不动通常是还在加载区块机器性能好的话几秒就完成性能差可能要好几分钟别急着关进程给它点耐心。4. 配置服务端核心文件逐项拆解把参数讲明白4.1 server.properties开服配置文件里的每个选项服务端运行成功后文件夹里会出现一个server.properties文件这个文件就是服务器的“总开关”几乎控制着一切基础行为。很多老玩家的第一份配置都是从复制粘贴别人的开始的但看得懂每一项背后的逻辑出了问题才知道怎么改。我用1.12.2为例挑几个最关键、最影响日常使用的参数说明一下server-port25565服务器监听端口默认是25565这是Minecraft的标准端口。如果你不想用默认端口可以改比如改成25566但玩家连接时就必须额外加端口号比如你xx.xx.xx.xx:25566麻烦一点所以我建议非必要不动它。online-modetrue这个参数控制是否启用正版验证。如果你的所有玩家都是正版用户保持true如果你想连盗版用户也放进来把它改成false。这个后面我会专门展开说涉及安全和补丁问题。white-listfalse是否开启白名单。设置为true时只有whitelist.json文件里的玩家才能进入服务器。公共服务器建议开启防止陌生人随意进出好友服其实也建议开启毕竟熊孩子防不胜防。max-players20最大同时在线人数。不要一下子设太高人数越多服务器越卡建议根据电脑配置从10开始试。difficulty1游戏难度0是和平1是简单2是普通3是困难。spawn-protection0出生点保护范围。如果设成16那么出生点附近16格范围内的方块只有OP才能修改防止新手一进来就把出生点挖烂。但如果你和朋友都要在这块区域搞建设建议直接设成0。view-distance10视距这个直接影响服务器性能。数值越大服务端需要计算的区块越多CPU和内存开销越大。低配机器建议改成4-6画面会有点远雾但流畅度提升非常明显。这只是一个开端。server.properties里还有几十个参数比如pvp、allow-flight、motd服务器列表里显示的说明文字、resource-pack资源包下载地址等等。我的建议是第一次开服时先把以上几个看懂改好其余的保持默认即可等运行稳定后再根据需求逐步微调。4.2 给OP权限、设置白名单服务器的基本管理操作服务器开起来之后你作为服主肯定需要最高权限来执行管理操作。给权限的方式有两种一种是直接编辑服务器文件夹里的ops.json文件把玩家名加进去另一种是在后台命令行输入op 玩家名这个命令会自动把玩家写入ops.json两种方式效果一样。不过这里有个细节需要注意第一次进入服务器的玩家系统会认为他是离线状态直接执行op命令可能提示找不到该玩家。最稳妥的顺序是让玩家先正常进入服务器一次然后你在后台执行op 他的游戏ID这时候就能成功。如果还是不行就检查一下服主自己的ID有没有拼错。要取消OP权限就用deop 玩家名。白名单操作也是同理。在后台输入whitelist on开启白名单功能然后执行whitelist add 玩家ID逐个添加。或者更简单粗暴一点直接编辑whitelist.json文件按格式写入玩家ID列表保存后重启服务端就能生效。我一般习惯直接用命令操作因为命令的方式会自动处理很多格式问题手工编辑JSON文件一旦语法写错整个文件就会失效。除此之外我强烈建议新手服主了解几个救命级命令save-all手动保存地图数据。stop正常关闭服务器千万不要直接关窗口会导致地图数据损坏。ban 玩家名和unban 玩家名封禁和解封。gamemode 1 玩家名把某玩家设为创造模式。这些命令都在后台命令行输入。如果是用面板类工具跑的服务器在控制台输入也是一样的。4.3 启动脚本怎么写内存参数到底该怎么填服务端跑起来之后每次开服都要敲一遍长命令实在太烦了写一个启动脚本才是正经做法。在Windows上我建议建一个start.bat文件内容大致如下echo off title Minecraft Server 1.12.2 java -Xms2048M -Xmx2048M -jar server.jar nogui pause这里面-Xms2048M和-Xmx2048M分别指定Java堆内存的初始值和最大值。我的经验是这两个值尽量设成一样因为如果初始值很小、最大值很大JVM在运行中需要反复申请和释放内存反而增加了GC垃圾回收开销导致游戏出现周期性卡顿。现在的电脑内存普遍够用干脆一次申请到位。具体分配多少取决于你电脑物理内存和玩家人数。我自己的配置是整机16G内存分8G给服务器客户端再单独跑一个游戏同时在线十几个人表现很稳定。如果你整机只有8G那4G是相对安全的上限再多就会把系统内存吃光Windows可能会强制关闭其他程序。另外要记住-Xmx只是Java堆内存服务端总体内存占用会比这个数字高一些需要预留余量。还有一个参数值得加上-XX:UseG1GC。1.12.2默认的垃圾回收器在某些场景下会引起较明显的卡顿改用G1垃圾回收器对大型服务器更友好。完整启动命令可以写成java -Xms4096M -Xmx4096M -XX:UseG1GC -jar server.jar noguinogui参数意思是只运行命令行界面不弹出图形化控制台窗口能省一部分资源。如果哪天不小心用完了内存看到日志里出现OutOfMemoryError那就赶紧把-Xmx调大或者减少在线玩家数量。5. 联机实现内网直连、端口映射、内网穿透一次讲清5.1 局域网联机最简单的开箱即用方案如果你的朋友和你连的是同一个路由器那局域网联机是最简单的。只要电脑防火墙允许Java程序通信朋友在《我的世界》多人游戏界面点“添加服务器”地址填你电脑的局域网IP比如192.168.1.23端口保持默认25565就能直接连上。怎么查看局域网IPWindows上按WinR输入cmd回车然后输入ipconfig找到“IPv4地址”那一行通常以192.168或10.x开头。直接把地址发给朋友即可。但我必须提醒一句局域网联机范围非常有限一个路由器下的设备才有效。而且很多人想跟公司、学校、或者另一座城市的朋友联机那就不能只靠这个方案了。5.2 端口映射让互联网上的朋友也能连进来让你的服务器暴露到公网上最正统的做法是在路由器上做端口映射也叫端口转发。原理很简单你路由器有一个公网IP外部设备访问你路由器IP的某个端口时路由器把这个流量转发到内网某个设备的指定端口上。具体操作步骤因路由器品牌而异但整体思路是一样的确认你的电脑内网IP是固定的最好去路由器后台给它设一个DHCP静态绑定防止IP地址变动导致映射失效。登录路由器管理页面通常是192.168.1.1或192.168.0.1找到“端口映射”或“虚拟服务器”或“NAT”相关的菜单。添一条规则外部端口填25565内部端口也填25565内部IP填你电脑的内网IP协议选TCP/UDP或者TCPMinecraft主要是TCP。保存后你的朋友需要在《我的世界》里填写的地址就是“你的公网IP:25565”。公网IP怎么看搜索引擎搜“IP”就会显示你所在网络的出口公网IP。不过现在很多家庭宽带并没有真正的公网IPv4地址运营商给你的是一个大局域网地址这种情况下即使做了端口映射外部也无法访问。怎么判断自己是不是公网IP打开路由器的WAN口状态如果显示的公网IP和你从外部网站查到的IP一致说明你有公网条件如果显示的是100.64.x.x、10.x.x.x这类私有地址那很遗憾你需要用下一节讲的内网穿透方案。端口映射做完之后还有一个隐形门槛宽带运营商封禁了来自外部对某些端口的访问比如80、443这种Web端口大概率被封但25565这类非常用游戏端口一般能通。如果测不通可以考虑换个不常用的端口试试比如25570并把server.properties里的server-port同步修改。5.3 内网穿透没有公网IP时的备用方案前面说过国内不少宽带没有公网IPv4这种情况下端口映射彻底失效只能借助内网穿透工具。原理上就是借助一台有公网IP的服务器做中转将你的游戏流量转发出去。这个思路其实很普遍大家在线看视频、远程访问家里设备都用到类似机制。具体工具方面SakuraFrp、花生壳这些算是我用过比较稳定的方案也有开源自建的frp方案。以SakuraFrp为例注册之后创建隧道选择TCP类型本地地址填127.0.0.1本地端口填25565系统会分配给你一个公网地址和随机端口朋友填那个地址连入即可。免费档一般够用了速度延迟会比直连差一些但好友服这种体量完全没问题。需要注意穿透工具分配的公网地址和端口是临时的重启客户端后可能会变。如果你和朋友要长期稳定联机建议把分配到的地址存下来也别忘了定期回来看看是否还在有效期内。用内网穿透服务时延迟主要受中转服务器地理位置影响选距离大家最近的中转节点体验会好很多。5.4 服务器日常管理备份、重启与防熊孩子服务器跑起来之后最怕的就是进游戏发现家被烧了、箱子被拆了或者玩到一半服务器崩了地图回档。这些问题的根源其实都在于“没有做备份”或者“没有做好访问控制”。我建议的备份策略很简单服务器在线期间每天固定时间在后台执行save-all把内存中的地图数据强制写入硬盘然后隔三差五把整个服务器文件夹压缩一遍存到另一个磁盘或网盘上。如果是给朋友开的长期服更专业的做法是用定时任务每天凌晨自动打包保留最近7天备份这样即使地图坏了最多损失一天进度。防熊孩子这件事我个人的意见是优先开白名单不要嫌麻烦。在server.properties里把white-listtrue然后用whitelist add命令逐个添加可信的玩家名字外人根本进不来。如果你的服务器已经处于半公开状态建议再装一个登录插件仅在Spigot/Paper核心下支持设置离线玩家的注册与登录密码防止有人冒用他人ID进服搞破坏。关闭服务器时尤其要注意执行stop命令等命令行显示“Closing”直到进程彻底退出再关窗口。我有一次图省事直接关窗口结果地图存档直接损坏几个朋友盖了半个月的建筑全没了那种懊恼感我至今记得。6. 常见问题与排查技巧实录6.1 启动失败、连接超时等典型报错速查表新手时期遇到的问题翻来覆去就那么几类我直接整理成表方便你对号入座现象可能原因解决办法双击jar无反应没有安装Java / 关联被抢占命令行手动执行java -jar server.jar报错Error: A JNI error has occurredJava版本不匹配确认1.12.2用Java 8不要用17启动后立刻闪退内存分配过大或过小/端口被占用设置合理的-Xmx用netstat -ano查端口占用自己连不上服务器防火墙拦截允许Java程序通过防火墙或临时关闭防火墙测试朋友连不上、自己连得上端口映射没生效或公网不可达检查内网穿透/端口映射先试局域网联机连上后马上断开online-mode与客户端正版状态不一致统一修改online-modetrue/false并重启提示“Failed to bind to port”端口被其他进程占用换一个端口或杀掉占用进程后台提示“You are not white-listed”开启白名单但没添加玩家执行whitelist add 玩家ID6.2 连接超时问题到底出在哪一环要说开服生涯里最气人的问题莫过于玩家告诉你“连接超时”了。别急这个问题的排查思路其实很固定。先在自己电脑确认服务端正常运行然后在同一局域网的设备上试连一次。如果局域网也连不上问题在服务端、防火墙或Java环境如果局域网能连而公网不行问题就在端口映射或内网穿透环节。外网连不进去时先到“修改服务器地址”界面确认填写的IP和端口都没有拼错。接着检查端口映射规则里的IP是不是你电脑现在的IP尤其注意路由器重启后DHCP可能重新分配了IP导致规则失效。再检查运营商的公网IP是否发生变化家庭宽带的公网IPv4一般长期不变但也不排除会变。排查到最后实在找不到毛病我有个土办法把你电脑到服务端所在机器的链路整体换个方式试一遍。比如原来用SakuraFrp换一个节点重新创建隧道原来用端口映射的先临时改成内网穿透验证服务端本身没问题再回头慢慢搞端口映射。分层排查的思路能帮你把漏洞快速缩小到某一环。6.3 服务器卡顿先别急着加内存很多人的第一反应是“卡了就是内存不够”实际上《我的世界》服务器卡顿的根源绝大多数时候是区块运算和实体数量过多。加内存只是治标甚至内存加得过大GC停顿反而会让卡顿更明显。我常用的优化顺序是在server.properties里把view-distance调低比如从10降到6这对CPU压力的缓解立竿见影。使用Paper核心它自带了很多优化选项比如区块缓存优化、实体追踪优化性能和原版核心差一大截。清理冗余实体比如大量的掉落物、动物、村民。一个最简单粗暴的方法是定期执行kill e[type!player]把非玩家实体清一遍但前提是先把动物收好。检查是否装了资源占用大的插件或mod逐个排查积重难返的元凶。如果以上都做完了还是卡再考虑加内存或换更高主频的CPU。这里补充一下如果你开的是Forge服务端且装了几十个mod性能优化会更复杂。很多mod本身就有性能问题需要配合对应优化mod使用比如FoamFix等。具体mod优化方案按你自己玩的整合包去搜通常社区里都有成熟的配置参数可以参考。6.4 离线模式与正版验证安全与便利怎么平衡前面提到online-mode这个参数值得单独拿出来说一下。默认情况下它是true服务器会验证每个连接玩家的微软账号有效性。如果你和朋友们都是正版用户建议保持默认这样账号体系最安全防冒名顶替、防熊孩子都有天然优势。很多人开服是为了让个别玩离线版的同学也能进来于是把online-mode改成false。这种情况下服务器不会验证账号任何人都能用任意ID直接进服安全风险陡增。我的建议是离线模式服务器必须开白名单同时装一个登录插件适用于Spigot/Paper。这样即使有人盗用你朋友的ID进服时也会被要求输入密码不至于被轻易仿冒。还有一个很容易踩的坑改online-mode后原先的玩家数据可能不匹配。如果你是先以离线模式玩的后来改成正版模式或反过来玩家存档会对应不上因为UUID生成逻辑不一样。遇到这种情况需要手动调整玩家UUID数据比较麻烦所以最好一开始就想清楚用正版还是离线中途切换的代价很高。7. 写在最后开服这件事藏着不少真实体验第一次开服成功那种带朋友进去的感受确实很奇妙——你发现原来几千块买回来的电脑除了刷剧打游戏还能提供一个让你和远方朋友共处的虚拟空间。虽然《我的世界》画面一直被人调侃“全是方块有什么好玩的”但真正一起搭过房子、挖过矿、被僵尸追着跑过的人都懂这里面有多少回忆。我个人试了这么多版本和服务端最后的建议就是不要一开始追求大而全的配置先用官方核心或Paper在本地把一个纯净的1.12.2服务器跑起来确认流程走通了再慢慢加优化的、加插件的、加mod的。整个过程里的乐趣不只是“开服”这么简单它顺带让你了解了端口、防火墙、Java参数这些平时根本不会碰的知识也算是一种额外的收获。如果你在照着教程操作的过程中遇到了某个报错但又找不到原因不妨先把完整的错误日志截个图搜索日志里最后出现的大写异常名称。大多数问题别人都已经踩过坑了搜出来的解决方案往往比你自己瞎琢磨高效得多。开服这事耐心永远是第一位的。最后再分享一个小技巧开服成功后在服务器文件夹里存一个文本文件把配置过的参数、添加过的玩家、遇到的问题都记下来。这习惯听着简单但半年之后你再回头看会发现它帮你避免了无数“这个问题我好像解决过但忘了怎么解决”的循环。祝你开服顺利做个好服主。
返回列表