目录

一.准备环境

1.云服务器

2.登录服务器

3.安装需求

二.服务端运行

1.启动

2.服务端

3.自动脚本(记得改权限)

4.服务端优化方式

5.问题解决


一.准备环境

本文作者搭建环境:华为云HECS,Linux,JAVA18, Forge40.1.73

1.云服务器

这篇教程不会深入讨论有关服务器的知识与技术,如有更高要求请参考其他大佬。

同时,服务器厂商有详细的说明文档。

2.登录服务器

这里使用XShell和Xftp为例。XShell(www.xshell.com/zh/xshell)官网。下载安装后打开

点击新建

名称自取,主机为服务器公网IP地址,然后切换到“用户身份验证”,输入用户名及密码,用户名填"root"即可,其他不用修改(如果有ssl密钥则优先考虑使用,这里不做说明)。确定或连接即可。

3.安装需求

这里使用常规的Screen方法即可。Screen是一款命令行终端切换软件,这里用于维持Minecraft Server的运行。

连接你的服务器之后应该出现如下画面

输入”yum install wget”会出现确认提示,按”y”键确认。有些服务器可能已经安装,则跳过

接下来输入

yum install screen

按”y”键确认。出现complete字样即可。

然后安装Java,输入

yum list java*

有些服务器可能不全,但是Minecraft1.18.2需要java17以上才能运行,这时候只能去官网下载Oracle Java18(www.oracle.com/java/technologies/javase/jdk18-archive-downloads.html)

选择第三个Linux ×64压缩归档,用Xftp上传至服务器,可以先在本地解压后在上传, 这一步先不急,可以配置完再传。

或者在XShell上使用"tar -zxvf 文件名.tar.gz"解压。

Xftp设置方式与XShell差不多,而且可以相互呼出。

接下来,下载minecraft 1.18.2 server和Forge文件

Minecraft 1.18.2https://launcher.mojang.com/v1/objects/1c898afff0449eed08ad8036aaa4c652952035de/server.jar

Forgehttp://files.minecraftforge.net/net/minecraftforge/forge/

Forge官网上如果卡在广告,那么在选择了合适的版本后,右键Installer复制连接在下载。

二.服务端运行

这里不讨论配置(比如server.properties),网上有太多文章了。

1.启动

在本地新建文件夹用于存放MC服务器文件和Forge文件(在远程服务器上一样,个人习惯),然后运行server.jar,第一次安装过程应该必定失败,应为你要先同意eula,在server.jar同文件夹下会在第一次运行时生成eula.txt,用文本编辑器打开并修改为true.

PS:在一般情况下,你的电脑(或服务器)应该只安装了java18/java17。按win + r ,在输入cmd打开提示符窗口,输入"java -version"查看。如果没有显示你希望的版本,就需要在启动时选择运行Java的目录了。

在server.jar所在目录中右键(或自己cd进去。"cd d:"进入D盘;"cd mc/1.18.2"进入D:/mc/1.18.2;"cd ../"返回上一级),打开终端输入

java -jar server.jar

以运行(可以在此命令最后加 "空格nogui"以关闭图形界面),Forge安装完成时生成启动脚本,所以不需要自己写。

第二次运行一般就可以了,确认启动成功后在打开的CMD窗口输入"stop"来停止MC服务器,不要直接关闭,容易回档。运行Forge安装文件,在弹出的对话框中选择安装server版本。安装完成后即可安装mods。

本地连接(在本地电脑上运行的MC服务端)的话在MC客户端服务器地址输入:127.0.0.1:25565

2.服务端

server.jar目录所有文件上传至服务器,将run.sh权限改成755,Xftp中右键菜单里有快捷工具。然后用XShell连接,依此输入:

cd server #假设文件在/root/server下
screen -S server #创建名为server的screen
sh ./run.sh 

等待启动成功即可,客户端通过IP:25565连接。

关闭远程终端后再次连接时,Screen窗口默认不会直接显示,你需要输入

screen -r server

来恢复Minecraft控制台界面。

关闭服务端后想关闭此Screen可以在此Screen窗口中输入exit

前面提到的yum命令搜不到合适的Java版本的同志,要把run.sh中的命令改成这样

/root/jdk-18.0.2.1/bin/java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.18.2-40.1.73/unix_args.txt "$@" nogui

也就是在前面加上Java解压目录

然后顺便解释一下,这个是Forge生成的的启动文件,@user_jvm_args.txt是我们加参数的地方,会生成在server.jar目录下,比如

-Xms1024M -Xmx2048M -XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true

-Xms1024M -Xmx2048M就是分配的Java虚拟机内存大小,我推荐最大最小内存一样,我这里是为了直观其实是服务器内存太小了,分配一样就会莫名其妙的崩溃

Tips:可以只添加 -Xms1024M -Xmx2048M 部分

3.自动脚本(记得改权限)

通过crontab -e 命令来定时执行任务

自动备份 backup.sh (这里用到了zip压缩,部分服务器需要自行安装zip支持)

#定义日期
datetime=$(date+%Y%m%d%H%M)
#确定screen ID
#这段命令的意思是查找名称为"server"的screen
screen_id=`screen-ls | grep .server | awk '{print $1}' | cut -d "." -f 1`
#在mc终端输入save-all保存
screen -x -S${screen_id} -p 0 -X stuff $"save-all"
#这是回车
screen -x -S${screen_id} -p 0 -X stuff $'\n'
#指向目录,复制服务端文件
mkdir /root/backup/mc${datetime}/
cp -r -f/root/server/* /root/backup/mc${datetime}/
#备份大小写入size.txt
du -sm/root/backup/mc${datetime}/ >> /root/size.txt
#压缩文件
zip -r -q/root/backup/mc${datetime}.zip /root/backup/mc${datetime}/
#删除临时文件
rm -rf/root/backup/mc${datetime}/
#提示(没什么用qwq)
echo"Backing up Minecraft,please wait."
#删除三天前的备份
find/root/backup -mtime +3 -exec rm {} \;

自动启动 start.sh

#定义screen名称
screen_name=$"server"
screen -dmS$screen_name
#启动指令,注意要新建一个auto_run.sh
cmd=$"sh/root/script/auto_run.sh"screen_id=`screen-ls | grep .server | awk '{print $1}' | cut -d "." -f 1`screen -x$screen_id -p 0 -X stuff "$cmd"
screen -x$screen_id -p 0 -X stuff $'\n' 

      auto_run.sh

cd /root/server
sh ./run.sh

自动关闭 shutdown.sh

datetime=$(date+%Y%m%d%H%M)screen_id=`screen-ls | grep .server | awk '{print $1}' | cut -d "." -f 1`
#以下为自定义信息,可自行取舍。通过使用screen -x -S ${screen_id} -p 0 -X stuff $"xxx"可以自动化控制MC,即使用脚本发送MC指令。
screen -x -S${screen_id} -p 0 -X stuff $"say Server will shutdown in 10min."
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 300s
screen -x -S${screen_id} -p 0 -X stuff $"say Server will shutdown in 5min."
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 240s
screen -x -S${screen_id} -p 0 -X stuff $"say Server will shutdown in 1min,please saveand ready to exit."
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 30s
screen -x -S${screen_id} -p 0 -X stuff $"say Last 30 second,bye and see you nexttime!"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 20s
screen -x -S${screen_id} -p 0 -X stuff $"say 10"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
screen -x -S${screen_id} -p 0 -X stuff $"say 9"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
screen -x -S${screen_id} -p 0 -X stuff $"say 8"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
screen -x -S${screen_id} -p 0 -X stuff $"say 7"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
screen -x -S${screen_id} -p 0 -X stuff $"say 6"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
screen -x -S${screen_id} -p 0 -X stuff $"say 5"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
screen -x -S${screen_id} -p 0 -X stuff $"say 4"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
screen -x -S${screen_id} -p 0 -X stuff $"say 3"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
screen -x -S${screen_id} -p 0 -X stuff $"say 2"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
screen -x -S${screen_id} -p 0 -X stuff $"say 1"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
screen -x -S${screen_id} -p 0 -X stuff $"say shutdown now"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
sleep 1s
#停止server
screen -x -S${screen_id} -p 0 -X stuff $"stop"
screen -x -S${screen_id} -p 0 -X stuff $'\n'
#备份
mkdir/root/backup/mc${datetime}/
cp -r -f/root/server/* /root/backup/mc${datetime}
du -sm/root/backup/mc${datetime}/ >> /root/size.txt
zip -r -q/root/backup/mc${datetime}.zip /root/backup/mc${datetime}/
rm -rf/root/backup/mc${datetime}/echo"Backing up Minecraft,please wait."
#关闭screen
screen -X -S${screen_id} quit

自动删除日志 del.sh

#删除两天前的日志
find /root/server/logs -mtime +2 -exec rm {} \;

crontab -e定时,它使用Vim编辑

输入a或按Insert键切换至编辑模式,输入

30 06 * * * sh/root/script/start.sh 

使得start.sh在6:30时运行。

编辑完成后,按Esc在按”:”冒号进入命令模式,输入wq以保存并退出,直接按q会提示未保存,按q!强制退出。

4.服务端优化方式

使用模组

  • Ferritecore 铁氧体磁芯 内存优化,可能导致掉TPS
  • Ksyxis 加速载入
  • LzyDUF DUF载入优化(和Ferritecore一起安装可能导致启动变慢,几率触发)
  • Memory Sweep 内存清理
  • Saturn 修复了生物群系温度的缓存的内存泄漏
  • Smooth Chunk Save 避免保存时的大量延迟
  • Starlight 重写Minecraft的光照系统使其更快
  • Why You Make Lag 包含很多针对服务端的优化

Tips:有一些mod需要双端安装才能正常运作

使用参数

适用于Hotspot版Java 8 8u271、openj9、Zulu Jdk 17 (测试来自网友)

但是本文作者在测试时报错(Oracle JDK 18)

原文链接:一个【效果明显】的Java 8优化JVM参数 - [MC]我的世界原版 (Minecraft) - MC百科|最大的Minecraft中文MOD百科 (mcmod.cn)
-d64 -XX:+AggressiveOpts -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSConcurrentMTEnabled -XX:ParallelGCThreads=8 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:+UnlockExperimentalVMOptions -XX:+ExplicitGCInvokesConcurrent -XX:MaxGCPauseMillis=50 -XX:+AlwaysPreTouch -XX:+UseStringDeduplication -Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true -XX:-OmitStackTraceInFastThrow -XX:+OptimizeStringConcat -XX:+UseAdaptiveGCBoundary -XX:NewRatio=3 -Dfml.readTimeout=90 -XX:+UseFastAccessorMethods

适用于Java8

测试在Java18/Java17上使用时可以运行,但优化效果未知。

原文链接:Aikar: 调整JVM —— 非常有效的服务器启动参数 - 联机教程 - Minecraft(我的世界)中文论坛 - (mcbbs.net)
java -Xms6G -Xmx6G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=35 -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -Dusing.aikars.flags=mcflags.emc.gs -jar paperclip.jar

5.问题解决

Zip安装

  登录root,在终端中输入

yum install zip

确认安装即可

推荐的模组

  • Simple Login 简单登录
  • Chunky 区块预加载
  • Farsight 缓存区块以提高客户端渲染距离(仅客户端)
  • FTB Chunks 认领区块、强加载、地图
  • Mouse Tweaks 鼠标手势 (仅客户端)
  • Not Enough Crashes 不够的崩溃 使得游戏崩溃时只退至标题界面,但如果游戏无法启动,请删除此模组
  • Oculus optifine的替代品
  • Spark 火花  服务端性能监测
  • ClientTweaks 客户端微调(仅客户端)
  • SpongeForge 海绵端支持(最高1.16.5,不知道什么时候更新)

CurseForge加速

浏览器安装AdGuard之类的广告过滤器,在用户过滤器(即自定义过滤)中添加

apis.google.com/js/platform.js$domain=minecraft.curseforge.com|www.curseforge.com
fonts.googleapis.com/css?family=*$domain=minecraft.curseforge.com|www.curseforge.com
tags.crwdcntrl.net/*.js$domain=minecraft.curseforge.com|www.curseforge.com

原文地址利用广告屏蔽插件 Adblock Plus 快速访问模组下载网站 CurseForge 网站 - Mod研讨 - Minecraft(我的世界)中文论坛 - (mcbbs.net)


以上,是我的开服经验分享。如有建议,还请各位在评论区补充。

MC 1.18.2 FORGE 开服教程及自动备份相关推荐

  1. Minecraft Paper 1.18.1 版开服教程,我的世界开服教程,MCSManager9面板使用教程

    Centos7使用MCSManager9面板搭建 我的世界(MC) Paper 1.18.1 版服务器教程,MCSManager9面板安装教程. Paper核心支持安装插件. 视频教程:https:/ ...

  2. Linux+MCSM9+Docker 搭建我的世界mohist1.18.2版服务器,MC开服教程

    Debian系统使用MCSManager9面板和Docker容器搭建Minecraft Java版私服的教程,本教程用的mohist1.18.2服务端,用其他服务端的也可以参考一下. mohist支持 ...

  3. Minecraft开服教程,Windows搭建 我的世界(mc) 1.18.2 服务器教程

    Windows server 2019搭建 Minecraft 1.18.2 forge版服务器教程,我的世界(MC)开服教程 Linux搭建我的世界 Paper1.18.1 服务器教程:https: ...

  4. 我的世界 1.18.1 Forge版 开服教程,可装MOD,带面板

    Minecraft Forge-1.18.1 Java版服务器搭建教程,可加MOD,带网页管理面板. 视频教程:https://www.bilibili.com/video/BV1US4y1K7vK/ ...

  5. MC开服教程3:python提取日志中的聊天记录、登录信息、死亡信息、成就信息

    零.前言 系列教程 MC开服教程1:简略版使用阿里云部署mc服务器(paper端) MC开服教程2:材质包法自定义唱片音乐 一.总介绍 在云端部署好多人服务器后,mc的logs文件夹里面记录了游戏的日 ...

  6. Minecraft开服教程

    Minecraft开服教程 如果你要和小伙伴联机时,可以选择的方法有这样几种: 局域网联机:优点:简单方便,在MC客户端里自带.缺点:必须在同一局域网内. 有些工具会带有联机功能:优点:一般是通过连接 ...

  7. 我的世界Minecraft基岩版开服教程(Linux)开服器开服包下载开服网站服务器开服核心开服端开服软件mac版Java启动器

    我的世界Minecraft基岩版开服教程(Linux)开服器开服包下载开服网站服务器开服核心开服端 前言:大家好我是艾西,接上一篇我的世界Minecraft Java开服教程(Windows) 这期跟 ...

  8. 帝国霸业银河生存开服教程——游戏

    帝国霸业银河生存开服教程--游戏 1. 服务器搭建 2. 配置文件结构 2.1 开服配置 2.2 物品配置 2.3 游戏配置 3. 管理员指令 4. 自定义合成 4.1 增加火焰喷射器燃料合成 4.2 ...

  9. 我的世界(Java版)原版服开服教程

    原文链接 我的世界(Java版)原版服开服教程 前言 最早的时候,我玩MC都是玩的本地世界,后来学会了和同学一起联机,每次联机都要在同一局域网下进行. 后来接触了一个叫"我的世界联机盒子&q ...

最新文章

  1. 2021第12届蓝桥杯省赛Python题目
  2. 2021 年架构技术面试大厂高频题汇总(附答案详解)
  3. c语言第1章ppt,c语言第1章课件.ppt
  4. spring cloud 概念
  5. amcharts 网页绘图插件
  6. 数据结构 二叉树的存储结构_线程二叉树| 数据结构
  7. sleep期间读取所有_ceph部分数据所有副本先后故障的抢救
  8. 每天学一点flash(76)百度MP3音乐APi接口使用
  9. 《Android内核剖析》读书笔记 第13章 View工作原理【View树遍历】
  10. Windows安装nginx服务
  11. 115网盘如何打开php文件格式,opensuse安装115网盘客户端
  12. 小程序如何写一个优美的tab选项卡
  13. java 月份适配计算_Java8中的时间日期API这么好用,你居然还没有掌握?
  14. [精简]RuoYi开发实战-搭建开发环境
  15. 4.0低功耗蓝牙解决方案
  16. 高瓴资本+张磊+价值
  17. 下一个独角兽!橙色云用互联网设计变革传统工业设计模式
  18. GSM 03.38 from Wikipedia
  19. 人生之路 — 如何养成自律
  20. pic单片机ccp脉冲捕捉c语言程序,PIC18F的CCP模块的捕捉模式实现电机测速的方法...

热门文章

  1. python 时间序列预测——NARX循环神经网络
  2. 讲解 Spatial Pyramid Pooling
  3. python判断字母大小写_用python如何判断字符的大小写
  4. AndroidStudio 弹出的Safe Delete 安全删除功能是什么
  5. 动态规划问题——最长公共子序列问题
  6. HCNP-RS培训视频课程[简讲版]-马青-专题视频课程
  7. 使用 git 创建补丁和打补丁。
  8. word中选中所有拼音
  9. 【C语言基础】printf函数
  10. python实现文档图像倾斜矫正,实现类似扫描仪功能