Appearance
基于 Fabric 1.21.10 的起床服务器搭建
第一部分:搭建Fabric服务器
准备工作
- 一台可以运行MC并拥有公网IP的服务器
- Java 21运行环境
- Fabric 1.21.10 JAR 本体 [点击此处前往Fabric官网]
在 Linux 环境搭建 (以 Ubuntu/Debian 为例)
1. 安装必要的JAVA环境
bash
# Ubuntu/Debian
apt update && apt install openjdk-21-jre-headless screen -y2. 创建服务器目录
bash
mkdir bw_server
cd bw_server
# 然后通过FTP等方式上传 server.jar 到此目录3. 首次运行服务器
bash
# 使用screen保持会话
screen -S minecraft
# 首次启动
java -Xmx2G -Xms1G -jar java -Xmx2G -jar fabric-(自行填写实际的JAR).jar nogui nogui
# 退出screen会话(先按Ctrl+A,再按D)4. 同意EULA协议
bash
nano eula.txt
# 将 eula=false 改为 eula=true
# 然后保存并退出编辑器(先按ctrl+X,再按Y,最后按Enter)Windows环境搭建
1. 安装Java环境
- 访问 https://www.oracle.com/java/technologies/downloads/#java21 或 https://www.azul.com/downloads/#zulu
- 下载并安装Windows的版本
2. 创建服务器文件夹
- 在桌面或其他位置创建新文件夹 (不要使用中文命名)
- 将server.jar放入此文件夹
3. 创建启动脚本
在文件夹中创建start.bat文件,内容为:
bat
@echo off
java -Xmx2G -Xms1G -jar fabric-(自行填写实际的JAR).jar nogui
pause4. 首次运行并同意EULA
- 双击
start.bat运行 - 打开生成的
eula.txt并将eula=false改为eula=true
第二部分:安装起床战争数据包
数据包安装步骤 (Linux/Windows通用)
1. 停止服务器
确保服务器完全停止运行 (终端运行 stop 指令)
2. 删除原有的世界(Word)文件夹
bash
# Linux
cd bw_server
rm -rf world
# Windows
# 直接删除world文件夹3. 上传并解压数据包
注意事项:
下载文件时,请仔细核对文件夹和文件名称:
文件夹命名格式: 起床战争v版本号【MC版本号】
包含的文件:
- 数据包:
起床战争数据包 v版本号.7z - 资源包:
[MC版本号] 起床战争-资源包 [v版本号].zip
文件类型识别:
.7z后缀 → 数据包文件.zip后缀 → 资源包文件
bash
# Linux
# 通过FTP或其他方式上传数据包文件到服务器
unzip 起床战争数据包_v版本号.7z
# 查看解压出的文件夹名
ls
# 将解压出的文件夹重命名为world
mv 解压出的文件夹名 world
# Windows
# 解压7z文件,将文件夹重命名为world4. 配置服务器设置
我们需要编辑server.properties文件,以下是建议的配置:
properties
# 服务器简介设置(可选,也可以按照喜好自行填写)
motd=§f §e§lBED WARS §6[1.21.10]§f\n §b§l单挑模式 §7| §3§l枪械模式 §7| §9§l疾速模式
# 资源包配置(重要!)
require-resource-pack=true
resource-pack=你的资源包的直链URL (必须是直链!)
resource-pack-sha1=资源包SHA1哈希值 (请自行计算哈希)
# 体验优化设置
allow-flight=true // 开启允许飞行,避免不必要的误判
// 吐个槽:实际上真实的外挂可以随意的绕过这个检测
// 而且禁用的话可能会因为各种原因误判然后被无辜的踢出
// 因此你禁用了飞行也没什么用
// Tips:而且Fabric端可以装载更高级的反作弊,这样对比着
spawn-protection=0 // 设置出生点保护为0,也就是禁用
enable-command-block=true
// 在1.21.10版本,enable-command-block的配置项已被删除
// 其默认为开启的,因此不需要管5. 获取资源包直链和SHA1值
资源包直链获取方法:
- 使用云存储服务(如123网盘、Google Drive、OneDrive等)来生成直链
- 或使用专业的文件托管服务
- 把资源包丢在服务器上并复制其的访问链接
- 除此之外,必须确保链接是支持HTTPS的!
SHA1值计算方法:
bash
# Linux
sha1sum 资源包文件名.zip
# Windows
certutil -hashfile 资源包文件名.zip SHA16. 启动服务器验证
bash
# Linux(在screen会话中)
java -Xmx2G -Xms1G -jar server.jar nogui
# Windows
双击start.bat配置说明
资源包配置详解
require-resource-pack=true- 强制客户端使用资源包resource-pack- 必须是可直接下载的URL链接resource-pack-sha1- 验证资源包完整性,并验证其是否已被篡改
性能优化设置
allow-flight=true- 启用飞行,防止不必要的误判spawn-protection=0- 禁用出生点保护,避免影响游戏机制
必要检查:
- 启用命令方块 - 以确保数据包功能正常 (在1.21.10版本,这个服务器配置已被删除,其默认为开启的,因此不需要管)
安装MOD/反作弊 (可选)
现在,您可以按照自己的需求来安装一些MOD 这里主要安装反作弊MOD
反作弊安装步骤
下载反作弊MOD
- 点击访问 反作弊的Modrinth页面
- 下载适用于Fabric 1.21.10的版本
安装MOD
- 将下载的JAR文件放入服务器的
mods文件夹中 - 重启服务器以加载MOD
- 将下载的JAR文件放入服务器的
验证安装
- 启动服务器后,检查控制台是否有Grim加载成功的消息
- 确认
config文件夹中已生成GrimAC配置文件夹
反作弊配置
反作弊提供了详细的配置选项 以下是针对起床战争服务器优化的配置方案:
config.yml - 主要检测参数配置
yaml
# config.yml - 主要配置
# 版权所有 © 2025 DefineOutside 及贡献者 / 遵循 GPLv3 开源协议
# 由 雾霭 做了些许针对BW数据包的修改
alerts:
print-to-console: true
proxy:
send: false
receive: false
verbose:
print-to-console: false
check-for-updates: false
client-brand:
ignored-clients:
- "^vanilla$"
- "^fabric$"
- "^lunarclient:v\\d+\\.\\d+\\.\\d+-\\d{4}$"
- "^Feather Fabric$"
- "^labymod$"
disconnect-blacklisted-forge-versions: true
spectators:
hide-regardless: false
allowed-worlds:
- ""
max-transaction-time: 5
disable-pong-cancelling: false
cancel-duplicate-packet: true
ignore-duplicate-packet-rotation: false
Simulation:
setback-decay-multiplier: 0.85
threshold: 0.25
immediate-setback-threshold: 1.2
max-advantage: 6
max-ceiling: 6
setback-violation-threshold: 12
Phase:
setbackvl: 1
decay: 0.005
AirLiquidPlace:
cancelvl: 0
FabricatedPlace:
cancelvl: 5
FarPlace:
cancelvl: 5
PositionPlace:
cancelvl: 5
RotationPlace:
cancelvl: 5
NoSlow:
threshold: 0.08
setbackvl: 12
decay: 0.35
Knockback:
setback-decay-multiplier: 0.999
threshold: 0.001
immediate-setback-threshold: 0.1
max-advantage: 1
max-ceiling: 4
Explosion:
threshold: 0.001
setbackvl: 3
TimerA:
setbackvl: 5
drift: 120
TimerLimit:
ping-abuse-limit-threshold: 1000
NegativeTimer:
drift: 1200
VehicleTimer:
setbackvl: 10
PacketOrderI:
exempt-placing-while-digging: false
Reach:
threshold: 0.0013
block-impossible-hits: true
enable-post-packet: true
exploit:
allow-sprint-jumping-when-using-elytra: true
allow-building-on-ghostblocks: true
distance-to-check-if-ghostblocks: 2
debug-pipeline-on-join: false
experimental-checks: true
reset-item-usage-on-item-update: true
reset-item-usage-on-attack: true
reset-item-usage-on-slot-change: true
packet-spam-threshold: 100
debug-packet-cancel: false
max-ping-out-of-flying: 1000
max-ping-firework-boost: 1000
history:
enabled: true
entries-per-page: 15
server-name: Prison
database:
type: SQLITE
host: localhost
port: 3306
database: grim
username: root
password: ""
config-version: 9messages.yml - 反作弊消息提示配置
yaml
prefix: "&b反作弊 &8»"
alerts-enabled: "%prefix% &f警报已开启"
alerts-disabled: "%prefix% &f警报已禁用"
verbose-enabled: "%prefix% &f详细警报已开启"
verbose-disabled: "%prefix% &f详细警报已禁用"
brands-enabled: "%prefix% &f显示客户端名牌已开启"
brands-disabled: "%prefix% &f显示客户端名牌已禁用"
client-brand-format: "%prefix% &f%player%用%brand%加入了游戏"
console-specify-target: "%prefix% &c您必须指定一个目标作为控制台!"
reloading: "%prefix% &7重载配置中..."
reloaded: "%prefix% &f配置已经重载完毕."
reload-failed: "%prefix% &c重载配置失败."
player-not-found: "%prefix% &c指定玩家不存在或离线!"
player-not-this-server: "%prefix% &c指定玩家不在此服务器上!"
spectate-return: "\n%prefix% &f点击这里返回之前的位置\n</hover></click>"
cannot-spectate-return: "%prefix% &c您只能在观看玩家后执行此操作"
cannot-run-on-self: "%prefix% &c你不能对自己使用此命令!"
upload-log: "%prefix% &f已经将日志文件上传至: %url%"
upload-log-start: "%prefix% &f上传中...请等待"
upload-log-not-found: "%prefix% &c找不到该日志."
upload-log-upload-failure: "%prefix% &c上载此日志时出错,有关详细信息,请参阅控制台"
run-as-player: "%prefix% &c此命令只能由玩家使用!"
run-as-player-or-console: "%prefix% &c此命令只能由玩家或控制台使用!"
alerts-format: "%prefix% &f%player% &b触发了&f%check_name%%experimental% &f(x&c%vl%&f) &7%verbose%"
alerts-format-proxy: "%prefix% &f[&cproxy&f] &f%player% &b触发了&f%check_name%%experimental% &f(x&c%vl%&f) &7%verbose%"
experimental-symbol: "*"
profile:
- "&7"
- "%prefix% &f%player% &b的信息"
- "&b延迟: &f%ping%"
- "&b版本: &f%version%"
- "&b客户端型号: &f%brand%"
- "&b水平敏感度: &f%h_sensitivity%%"
- "&b垂直敏感度: &f%v_sensitivity%%"
- "&bFastMath: &f%fast_math%"
- "&7=="
help:
- "&7=="
- "/grim alerts &f- &7显示/隐藏警报"
- "/grim brands &f- &7显示/隐藏客户端名牌"
- "/grim profile <player> &f- &7查看玩家信息"
- "/grim help &f- &7查看此帮助消息"
- "/grim debug <player> &f- &7开发者预测输出"
- "/grim perf &f- &7开发者毫秒预测"
- "/grim reload &f- &7重新加载配置"
- "/grim spectate <player> &f- &7观看玩家"
- "/grim verbose &f- &7显示无缓冲区的每个拉回"
- "/grim log [1-999] &f- &7预测标志的调试日志"
- "/grim history <player> [页面] &f- &7显示玩家之前的警报"
- "&7"
grim-history-load-failure: "%prefix% &c历史子系统加载失败!请检查服务器控制台中的错误。"
grim-history-disabled: "%prefix% &c历史子系统已禁用!"
grim-history-header: "%prefix% &b显示&f%player%的日志&f(&f%page%&b/&f%maxPages%&f)"
grim-history-entry: "%prefix% &8[&f%server%&8] &b失败&f%check%&f(x&c%vl%&f)&7%verbose%&f(&b%timeago%前&7)"punishments.yml - 惩罚配置
yaml
# punishments.yml - 惩罚作弊者配置
# 由 雾霭 做了些许针对BW数据包的修改
# 数据包专门提供了一个函数,用于处理作弊者
# 作弊者在被检测到时会被踢出,达到三次将会被自动封禁
Punishments:
Simulation:
remove-violations-after: 300
checks:
- "!Simulation"
- "GroundSpoof"
- "Timer"
- "TimerLimit"
- "NoFall"
commands:
- "100:40 [alert]"
- "120:0 execute as %player% at @s run function sv:server/punish/test"
Knockback:
remove-violations-after: 300
checks:
- "Knockback"
- "Explosion"
commands:
- "5:5 [alert]"
- "10:0 execute as %player% at @s run function sv:server/punish/test"
Post:
remove-violations-after: 300
checks:
- "Post"
commands:
- "20:20 [alert]"
- "40:0 execute as %player% at @s run function sv:server/punish/test"
BadPackets:
remove-violations-after: 300
checks:
- "BadPackets"
- "PacketOrder"
- "Crash"
commands:
- "20:20 [alert]"
- "25:0 execute as %player% at @s run function sv:server/punish/test"
Reach:
remove-violations-after: 300
checks:
- "Reach"
commands:
- "1:1 [alert]"
- "1:0 execute as %player% at @s run function sv:server/punish/test"
Hitboxes:
remove-violations-after: 300
checks:
- "Hitboxes"
commands:
- "5:3 [alert]"
- "5:0 execute as %player% at @s run function sv:server/punish/test"
Misc:
remove-violations-after: 300
checks:
- "Vehicle"
- "!NoSlow"
- "Sprint"
- "MultiActions"
- "Place"
- "Baritone"
- "Break"
- "TransactionOrder"
- "Elytra"
- "Chat"
- "Exploit"
commands:
- "10:5 [alert]"
- "30:0 execute as %player% at @s run function sv:server/punish/test"
Combat:
remove-violations-after: 300
checks:
- "Interact"
- "Aim"
commands:
- "20:40 [alert]"
- "30:0 execute as %player% at @s run function sv:server/punish/test"
Autoclicker:
remove-violations-after: 300
checks:
- "Autoclicker"
commands:
- "20:40 [alert]"
- "20:40 [log]"配置说明
- config.yml: 主要调整了部分检测的敏感度,针对起床战争进行了优化
- messages.yml: 提供了完整的中文提示信息,方便管理员理解反作弊警告
- punishments.yml: 设置了渐进式惩罚机制,从报告到管理员到执行惩罚函数 (作弊者在被检测到时会被踢出,达到三次将会被自动封禁)
重要提示: 修改配置后需要使用 /grim reload 命令重新加载配置或重启服务器才能生效!
最终验证
启动服务器后,通过以下步骤验证:
- 使用客户端连接服务器
- 确认资源包正常加载
- 测试数据包各项功能
- 游玩几局,检查功能是否正常
至此,你的起床战争服务器已搭建完成! 如有问题,请加入赞助者群聊以获取技术支持 (链接通常在购买渠道的私信内,还请仔细查看!)
本文贡献者:雾霭