原神私服服务端Grasscutter搭建实战
原神私服服务端Grasscutter搭建实战
2022/5/11 更新了文章细节
搭建参考视频
视频链接: https://www.bilibili.com/video/BV1Ba411a7V2【求个三连】
第一部,安装环境
[mark_a]Java17:下载Java17 [/mark_a]
(这个我不用多说,正常安装就行)
[mark_a]mongodb:下载mongodb [/mark_a]
(这个安装比较慢,我安装等了快30分钟,注意如果安装后没有界面说明你需要到mongodb.org官网下载gui)
[mark_a]git:下载git密码:69st[/mark_a]
(这个是为了方便cloneGitHub项目)
第二部,开始clone
创建文件夹,并右键选择git bash here

[qzdypre]git clone https://github.com/Grasscutters/Grasscutter.git -b development[/qzdypre]
【如果显示
Cloning into 'Grasscutter'...
fatal: unable to access 'https://github.com/Grasscutters/Grasscutter.git/': Failed to connect to github.com port 443 after 21098 ms: Timed out
说明没有连接到仓库,重新执行上面的指令】
【如果显示
Cloning into 'Grasscutter'...
remote: Enumerating objects: 9458, done.
remote: Counting objects: 100% (270/270), done.
remote: Compressing objects: 100% (148/148), done.
remote: Total 9458 (delta 98), reused 193 (delta 71), pack-reused 9188
Receiving objects: 100% (9458/9458), 33.17 MiB | 2.02 MiB/s, done.
Resolving deltas: 100% (4795/4795), done.说明是成功了】
图片示例:
第三部,开始构建核心
(开始前请查看你的文件夹路径是否有中文,如果有请移动的磁盘根目录)
图片示例:
然后同样在刚才的右键的git bash here窗口输入
[qzdypre]cd Grasscutter[/qzdypre]
然后输入
[qzdypre]./gradlew.bat[/qzdypre]
等加载完后输入
[qzdypre]./gradlew jar[/qzdypre]
就可以了,如果你在这部报错请确认一下
Java版本是17,是在英文路径目录
如果还是不行可以按住shift键右键,选择win10是【Windows PowerShell】win11是【Windows终端】
然后再输入上面的指令,确认文件夹里面生成了这个文件就算成功了一大部
[mark_b]
当然如果你还是不会构建,可以去https://discord.gg/9fSwCHhs
如果你懒的构建可以去https://ci.grasscutter.ga/job/Grasscutter-Dev/下载别人自动构建好的
[/mark_b]
第四部,覆盖资源包
[mark_a]
为了方便,我进行了打包
链接:下载覆盖资源包
[/mark_a]
直接覆盖到Grasscutter文件夹里面
第五部,进行抓包
[mark_a]
下载安装Fiddler
链接:下载Fiddler
[/mark_a]
安装好后点击tools,点击options
点击https并勾选打开第2个选项
点击connections,8888改成8181,并勾选第2个选项
然后点击ok进行保存,点击fiddlerscript把所有删除改成下面这个
[qzdypre]
/* Original script by NicknameGG, modified for Grasscutter by contributors. */
import System;
import System.Windows.Forms;
import Fiddler;
import System.Text.RegularExpressions;
class Handlers
{
static function OnBeforeRequest(oS: Session) {
if(oS.host.EndsWith(".yuanshen.com") || oS.host.EndsWith(".hoyoverse.com") || oS.host.EndsWith(".mihoyo.com")) {
oS.host = "127.0.0.1"; //This can also be replaced with another IP address.
}
}
};
[/qzdypre]
【注意如果你是玩别人服务器或者是在云服务器搭建的,127.0.0.1可以改成你的公网】
第六部,开启服务器创建账号
双击start.bat启动
[mark_d]注意:因为核心版本更新的问题,
请自行右键点击编辑改动
java -jar grasscutter-1.0.0-dev.jar
把java -jar grasscutter-1.0.0-dev.jar的grasscutter-1.0.0-dev.jar改成对应的版本
例如目前5/11最新的版本是grasscutter-1.1.1-dev.jar
则改成java -jar java -jar grasscutter-1.0.0-dev.jar
[/mark_d]
在start.bat的窗口上输入
account create admin 1314520
解释一下这个指令
account create 用户名(就是平常手机邮箱登录的位置) uid(这个不用我多说)
【注意:这个指令创建的账号是默认有所有权限的】
第七部,打开原神
打开原神时有一个协议,点击yes,国服可能有个报错乱码的协议,不用管,确认就行
之后正常登录上面的创建账号就行,密码随便填,目前不具备密码功能,所以创建的用户名是个重要问题
之后就可以正常游玩了,指令在好友聊天的server那边打,/giveall指令可以获取全部东西角色武器等都是满级
【查看指令参考我上一个帖子】
第八部,云服务器开服内容补充
在服务器开服时,游玩会报4206错误
在开启start.bat,会生成一个config.json文件,用记事本打开
如果没有正常排序请其他编程软件打开【个人建议notepad++】
请把两个PublicIp值改成你的公网IP,分别在17行和61行
(可能Grasscutter更新后位置会有变动,一般在在17行和61行左右)
第九部,目前不能做到的功能以及config.json设置内容补充
目前做不到功能有剧情,任务是做不到的,而秘境及副本都多少有点bug
config.json因为dev更新很快,所以不会包括所有
注意一下true是开启的意思,false是关闭的意思
(其实玩过服务器的应该都知道的)
config.json设置内容:【注意请不要乱删除】
DatabaseUrl是代表连接的数据库,默认不用动就行
DatabaseCollection是代表数据库文件夹,默认不用动就行
RESOURCE_FOLDER是代表服务端读取资源的文件夹
DATA_FOLDER是字面意思,代表各种默认数据,例如生成,卡池,商店等
PACKETS_FOLDER暂时不知道什么作用,猜测是纹理,后续可能有大佬搞
DUMPS_FOLDE暂时也不知道什么作用
KEY_FOLDER字面意思,是连接原神验证的东西
SCRIPTS_FOLDER是识别lua的,就是秘境之类的
PLUGINS_FOLDER字面意思,是插件的地方
LANGUAGE_FOLDER字面意思,添加多语言用处
DebugMode暂时不知道
RunMode暂时不知道
GameServer是游戏服务器参数
Name是服务器名字【仅多个服务器时才可以看到】
Ip没有什么好说的,不要改
PublicIp别人连接IP[注意不是自定义,是你服务器的IP]
Port没有什么好说的服务器游戏端口
PublicPort没有什么好说的,不用改
DispatchServerDatabaseUrl是游戏服务器连接的数据库
DispatchServerDatabaseCollection是游戏服务器连接的数据库的文件夹
InventoryLimitWeapon
InventoryLimitRelic
InventoryLimitMaterial
InventoryLimitFurniture
InventoryLimitAll
暂时目前我不清楚
MaxAvatarsInTeam最大队伍人数,但是目前测试没有用,没有实装
MaxAvatarsInTeamMultiplayer最大多人队伍人数,但是目前测试没有用,没有实装
MaxEntityLimit是地图上实体最多多少个
WatchGacha是观测抽卡,但是实测没有什么作用,这不是抽卡记录
ServerNickname服务器控制台在好友页面的名称
ServerAvatarId服务器控制台在好友页面的头像
WelcomeEmotes每次进入服务器服务器控制台发送的表情
WelcomeMotd每次进入服务器服务器控制台发送的文字
WelcomeMailContent新账号的初始邮件文字
WelcomeMailItems新账号的初始邮件送的东西
EnableOfficialShop字面意思商店
ADVENTURE_EXP_RATE
MORA_RATE
DOMAIN_DROP_RATE
暂时我不知道什么用,但是不能改
DispatchServer原神的验证服务器
Ip不用问我说,不要改
PublicIp别人连接IP[注意不是自定义,是你服务器的IP]
Port验证服务器的端口,一般不用改,除非你的公网建不了网站
PublicPort没有什么好说的,不用改
KeystorePath验证证书位置
KeystorePassword证书密码,这里请不要改
UseSSL是否启用SSL
FrontHTTPS是否启用HTTPS
AutomaticallyCreateAccounts是登录时候没有该账号,自动创建账号【注意:这个自动创建的账号没有权限】
defaultPermissions暂时不知道什么用处
GameServers可以添加其他服务器连接
Language是服务器的语言,这个小白不建议改
OpenStamina是开启体力,如果关掉就不会限制体力
[mark_d]注意:因为核心版本更新的问题,可能有些东西已经不一样了,请自行更改!!![/mark_d]
查看指令:https://hbj2457.cn/?p=107 [目前gc/lc服务端已经支持/help指令中文介绍]
手机进服教程:https://hbj2457.cn/?p=122
带密码的Grasscutters—Leekcutter:https://hbj2457.cn/?p=128
Comments 35 comments
Blogger 是
请问打开start.bat报错什么原因[ERROR] Failed to load language file: zh-CN.json
java.lang.NullPointerException: null
at java.base/java.io.Reader.<init>(Reader.java:168)
at java.base/java.io.InputStreamReader.<init>(InputStreamReader.java:76)
at emu.grasscutter.utils.Utils.readFromInputStream(Utils.java:257)
at emu.grasscutter.utils.Language.<init>(Language.java:50)
at emu.grasscutter.utils.Language.getLanguage(Language.java:22)
at emu.grasscutter.Grasscutter.loadLanguage(Grasscutter.java:152)
at emu.grasscutter.Grasscutter.<clinit>(Grasscutter.java:63)
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonObject.has(String)" because "object" is null
at emu.grasscutter.utils.Language.get(Language.java:76)
at emu.grasscutter.utils.Language.translate(Language.java:32)
at emu.grasscutter.Grasscutter.main(Grasscutter.java:89)
Blogger 白夜
@是 典型的环境没搭好
Blogger rzhh123456
显示这个怎么办:Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "<local2>" is null
at emu.grasscutter.tools.Tools.getAvailableLanguage(Tools.java:46)
at emu.grasscutter.tools.Tools.getLanguageOption(Tools.java:61)
at emu.grasscutter.tools.Tools.createGachaMapping(Tools.java:40)
at emu.grasscutter.server.dispatch.DispatchServer.start(DispatchServer.java:457)
at emu.grasscutter.Grasscutter.main(Grasscutter.java:109)
Blogger 白夜
@rzhh123456 典型的环境没搭好,文件缺失
Blogger MadDogPeter
同样的问题….环境都安装了,反复尝试了几次但都是这样
我看原文中似乎要用到mitmproxy?start.cmd自动启动时要用到这个吗?
还有Grasscutter更新到1.1.0了,我看演示里是1.0.3版本会和这个有关吗?
Blogger 白夜
@MadDogPeter 版本和构建方法没有什么问题的
Blogger 白夜
@MadDogPeter 还有mitmproxy是Linux的代理软件,win建议选择fiddler
Blogger mhy2020
点击start.bat没有窗口是什么问题呀?前面的那些都没有问题 ?
Blogger 白夜
@mhy2020 使用管理员权限运行试试看,或者直接右键改,据我所知gtasscutter已经更新1.1.0版本了
Blogger AyasukarAN
运行bat闪退,直接>java -jar grasscutter-1.0.3-dev.jar提示Error: Unable to access jarfile grasscutter-1.0.3-dev.jar
Blogger 白夜
@AyasukarAN 使用管理员权限运行试试看,或者直接右键改,据我所知gtasscutter已经更新1.1.0版本了
Blogger bincoo
大佬,客户端版本有要求吗?
Blogger 白夜
@bincoo 没有
Blogger …
大佬,用了这个之后,再用官方客户端登陆,账号会被封禁吗
Blogger 白夜
@... 不会封
Blogger 太上苍
博主出现了 和一楼一样的问提 环境java17安装了没有问题 Fiddller 选项和复制也没问题 第一步是连接仓库下载的 核心安装完也和视频状况一样 覆盖也是直接扔进去的 1.0.3改了1.1.1 ip也正常 但是start.bat这一步出错
Blogger 白夜
@太上苍 打开cmd输入java -verison看看是不是Java17.0.3,然后确定mongodb数据库正常在运行,还有就是看文章仔细检查,而且前面步骤核心不是安装而是你在制作核心
Blogger 坑比的小帅哥
大佬,我自己windows成功了, 但想放在 云服务器里面试试
我端口全开了,为啥会有这个问题啊。
Failed to start Express
Exception in thread "main" java.lang.RuntimeException: Port already in use. Make sure no other process is using port 443 and try again.
这为啥啊?
Caused by: java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:443
Blogger 白夜
@坑比的小帅哥 您不会翻译吗?这个是443端口被其他占用了
Blogger ,,,
start.bat用管理员也打不开咋办嘞
Blogger 白夜
@,,, 看教程,割草机版本号有更新,自己右键编辑start.bat就行
Blogger emm
大佬,第四步的资源包为啥打不开啊
Blogger 白夜
@emm 修复了
Blogger 若白
第四步里面的链接打开了没东西咋办
Blogger 白夜
@若白 修复了
Blogger 凉开水
部署服务器上的操作和这个一样吗
Blogger 白夜
@凉开水 对
Blogger Thao
start.bat打开闪退,java是17.0.3环境配置好了,start.bat也编辑了
Blogger 失名
外网进服务器 错误代码4206 这个问题能具体讲讲嘛 麻烦了
Blogger 白夜
@失名 仔细看教程
Blogger ou、
22:18:02 <ERROR:ResourceLoader> Error loading resource file: [AvatarTalentExcelConfigData.json]
java.lang.NullPointerException: Cannot read the array length because the return value of "emu.grasscutter.data.excels.AvatarTalentData.getAddProps()" is null
at emu.grasscutter.data.excels.AvatarTalentData.onLoad(AvatarTalentData.java:60)
at emu.grasscutter.data.ResourceLoader.loadFromResource(ResourceLoader.java:125)
at emu.grasscutter.data.ResourceLoader.loadFromResource(ResourceLoader.java:111)
at emu.grasscutter.data.ResourceLoader.loadResources(ResourceLoader.java:100)
at emu.grasscutter.data.ResourceLoader.loadResources(ResourceLoader.java:81)
at emu.grasscutter.data.ResourceLoader.loadAll(ResourceLoader.java:65)
at emu.grasscutter.Grasscutter.main(Grasscutter.java:154)
22:18:02 <ERROR:ResourceLoader> Error loading resource file: [NewActivityWatcherConfigData.json]
java.lang.NullPointerException: Cannot read field "paramList" because "this.triggerConfig" is null
at emu.grasscutter.data.excels.ActivityWatcherData.onLoad(ActivityWatcherData.java:27)
at emu.grasscutter.data.ResourceLoader.loadFromResource(ResourceLoader.java:125)
at emu.grasscutter.data.ResourceLoader.loadFromResource(ResourceLoader.java:111)
at emu.grasscutter.data.ResourceLoader.loadResources(ResourceLoader.java:100)
at emu.grasscutter.data.ResourceLoader.loadResources(ResourceLoader.java:81)
at emu.grasscutter.data.ResourceLoader.loadAll(ResourceLoader.java:65)
at emu.grasscutter.Grasscutter.main(Grasscutter.java:154)
出现这样情况,检查了Java环境正常,可以正常使用,文件按照教程来的,没有缺失增多的情况,怎么办呢
Blogger 不知名的贫僧
大佬能给我3.0的包吗?谢谢
Blogger 白夜
@不知名的贫僧 去GitHub看看