-
基岩版Nukkit服务器及其衍生核心PM1E/PowerNukkitX开发的先进反作弊。
-
架构和设计学习Java版知名反作弊NoCheatPlus。
-
其目的是修复和阻止我的世界基岩版中的漏洞和作弊行为。
-
非常欢迎和支持你来贡献代码,以给社区贡献,star本项目以关注我们
- 高性能、低占用、高效率
- 易使用、多语言、社区开源
- 保护你的服务器,防止崩服
- 阻止玩家在你的服务器上面作弊
- 这是一个调试插件,它可以让你的NCP只通过Title提醒被踢的玩家,而不会实际提醒 踢它,它可以用来调试插件的配置。
- 这是一个 CPS 检测扩展组件。它使用知名小游戏服务器的检测算法 EaseCation,间隔获取cps。如果每次都高于阈值,则反作弊将踢它。 使用该插件会自动关闭NCP自身的CPS检测系统。
- 这是NCP的扩展组件,为NCP提供可视化操作面板和玩家举报系统。 它的所有语言主题甚至命令都可以在配置文件中自定义。
-
这是NCP的一个扩展,可以让你手动兼容其他插件,减少误判 由于不支持导致反作弊,比如双跳。
-
这是NCP的扩展插件,同步NCP ban数据到群服数据数据库 同步,并依赖于插件 DbLib。如果您安装了 NCPPanel,它甚至可以同步面板数据。
-
这是 NCP 的扩展,它将把你的 NCP 变成一个被动的静态反作弊。反作弊不起作用 通常情况下,只有在其他玩家举报后,它才会检测到玩家。它没有报告系统 本身,并且需要安装 NCPPanel。
-
这是NCP的扩展插件,可以为你的NCP提供一个网页面板来管理服务器。这意味着你不用手动修改配置文件,直接通过网页也能便捷的检测服务器内玩家的行为。
- SurvivalFly(97%)
- CreativeFly
- Speed(20%)
- FastEat
- NoSlow(50%)
- InventoryMove
- InventoryFastClick
- NoFall
- Velocity
- Phase
- Crasher
- Client
- MorePacket
- FastBreak
- Scaffold
- KillAura
- Reach
- X-Ray
- AutoClicker
- HitBox
- Helper Tool GUI
-
Java CI: https://ci.lanink.cn/job/NoCheatPlus 在仓库CI里下载最新版本
NoCheatPlus-1.0-SNAPSHOT-jar-with-dependencies.jar
-
将其放入服务器的
plugins/
文件夹内。 -
在使用插件之前,您必须安装以下依赖
-
KotlinLib
git clone https://github.com/Physical-Science-Academy/NoCheatPlus.git
cd NoCheatPlus
git submodule update --init
./mvnw clean package
- 构建好的插件将出现在 target/ 目录。
/ncp
获取NCP信息/ncp version
获取NCP信息/ncp reload
热重载配置文件/ncp debug
临时开关调试模式/ncp ban
封禁一名玩家/ncp unban
解封一名玩家/ncp kick
踢出一名玩家/ncp toggle
开关检测项目/ncp permission
管理绕过检查的权限
接下来启动服务器。之后,你会看到plugins/
下生成了一个名为NoCheatPlus
的目录。
让我们首先打开其中的配置文件 ncpconfig.yml
。
# NoCheatPlus AntiCheat Config
config-version:
notify: false
version: 1000
# Currently "en" and "zh" are supported languages
# You are able to create your own language in the "lang" config directory
lang: "en"
logging:
active: true
auto-delete-days: 1
debug: false
prefix: "§c§lNCP §7>> §r"
extended:
command: true
violation: true
actions:
waring_delay: 10
kick_broadcast: "§c§lNCP §7>>@player has been kicked for @hack"
protection:
net:
packet: true
chunk:
active: true
dynamicScan: false
scanHeight: 6.0
scanWorld:
- world
filter:
- 0
- 8
- 9
- 10
- 11
- 20
- 26
- 27
- 30
- 31
- 32
- 37
- 38
- 39
- 40
- 44
- 50
- 63
- 64
- 65
- 66
- 68
- 71
- 81
- 83
- 85
- 96
- 101
- 102
- 104
- 105
- 106
- 107
- 126
- 141
- 142
ores:
- 14
- 15
- 16
- 21
- 56
- 73
- 74
- 129
command:
hide:
active: true
message: "§c§lNCP §7>> §rYou do not have permission to run this command."
commands:
- "?"
- "plugins"
- "version"
- "about"
- "ver"
checks:
blockbreak:
fastbreak:
active: true
max: 35
min: 0
actions: "cancel vl>5"
fight:
speed:
active: true
maxspeed: 25
dealvariance: 0.1
cancelDamage: true
actions: "cancel vl>5&&kick vl>20"
inventory:
instanteat:
active: true
actions: "cancel vl>5&&kick vl>20"
move:
active: true
actions: "cancel vl>0&&kick vl>3"
open:
active: true
actions: "cancel vl>0"
fastclick:
active: true
delay: 50
actions: "cancel vl>5&&kick vl>20"
item:
active: true
actions: "kick vl>10"
moving:
survivalfly:
active: true
strict_mode: false
setback_policy:
fall_damage: true
void_to_void: true
latency_protection: 120
actions: "cancel vl>20&&log vl>30 break=60&&warn vl>90 message=fly_short&&kick vl>100&&ban repeat=3 time=3,0,0"
speed:
active: true
morepackets:
active: true
actions: "cancel vl>5&&kick vl>15&&ban repeat=3 time=3,0,0"
creativefly:
active: true
actions: "cancel vl>20"
nofall:
active: true
dealdamage: true
skipallowflight: true
resetonviolation: false
resetonteleport: true
resetonvehicle: true
actions: "cancel vl>5&&log vl>10&&kick vl>20"
vehicle:
active: true
actions: "cancel vl>10&&kick vl>50&&ban repeat=3 time=3,0,0"
string:
kick: "§c§lNCP §7>> §rYou are kicked by NCP because of using @hack on server@next"
ban: "§c§lNCP §7>> §rYou are banned by NCP for §c@days,@hours,@minutes,@seconds§r because of using @hack @nextEndTime: @end"
fly_short: "@player could be flying hack @vl"
permission:
no_permission: "§c§lNCP §7>> §rYou do not have permission to run this command."
policy:
- "nocheatplus.admin.all:reload,kick,ban,unban,debug,toggle,permission"
- "nocheatplus.admin.helper:kick,ban,unban"
bypass:
# Custom bypass permission
MOVING_CREATIVE_FLY:
- "ncp.creativefly.bypass"
在每个检测项目中有一个actions的设定,下面给出处罚操作的格式:
- 处罚类型
对象A[关系式]对象B 其他参数
- 多个处罚操作之间用与
&&
进行连接 - 支持的处罚类型如下:
cancel
产生一个拉回操作,回滚当前tick的运动log
向NCP日志中记录玩家作弊行为,参数break 冷却秒数
warn
向玩家发送一个警告消息,参数message 消息内容
kick
将玩家踢出服务器ban
将玩家从服务器封禁,参数repeat 容错次数
,time 封禁时间
- 若不设置参数,插件将使用NCP默认值 添加警告消息需要在string中加入
在permission.policy中进行设置,格式为:
权限:命令表
命令之间用逗号连接- 若命令在NCP中没有一条记录,那么默认所有玩家都可以使用它
- 例如version在事例的
nocheatplus.admin.all
和nocheatplus.admin.helper
中都没规定
在permission下bypass中添加,格式为:
作弊类型:权限(List)
拥有权限的玩家不会受到该项检测
可用作弊类型:
MOVING_SURVIVAL_FLY
MOVING_CREATIVE_FLY
MOVING_VEHICLE
MOVING_SPEED
MOVING_MORE_PACKETS
MOVING_NO_FALL
INVENTORY_INSTANT_EAT
INVENTORY_OPEN
INVENTORY_FAST_CLICK
INVENTORY_MOVE
FIGHT_SPEED
FIGHT_REACH
-
NCP 提供了丰富的开发接口,你可以依赖它快速开发扩展插件
开发者接口参考 NoCheatPlus
com.github.Physical-Science-Academy.NoCheatPlus
ArtifactId | Version |
---|---|
NoCheatPlus | maven-repo-20220552-2a |
NoCheatPlus | maven-repo-20220552-3a |
NoCheatPlus | maven-repo-20220552-4a |
NoCheatPlus | maven-repo-20220552-common |
CompatNCP | maven-repo-20220552-common |
ECCPCompat | maven-repo-20220552-common |
NCPLiteBan | maven-repo-20220552-common |
NCPPlugin | maven-repo-20220552-common |
NCPStaticBar | maven-repo-20220552-common |
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.Physical-Science-Academy.NoCheatPlus:CompatNCP:maven-repo-20220552-common'
}
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.Physical-Science-Academy.NoCheatPlus</groupId>
<artifactId>NoCheatPlus</artifactId>
<version>maven-repo-20220552-common</version>
</dependency>
</dependencies>
一个简单的例子去实例化API:
NoCheatPlusAPI api = NoCheatPlus.instance;
方法名 | 介绍 |
---|---|
getNCPProvider() | 获取NCP主类 |
getComManager() | 获得NCP模块管理器 |
getAllComponents() | 获得所有的NCP模块 |
getAllPlayerData() | 获得所有的NCP玩家数据 |
addComponents(components: NCPComponent) | 注册NCP模块 |
hasPlayer(player: Player) | 判断玩家是否在NCP中生成了数据 |
getPlayerProvider(player: Player) | 获得玩家数据 |
getNCPLogger() | 获得NCP日志记录器 |
getNCPConfig() | 获得NCP主配置文件 |
getNCPBanRecord() | 获得NCP封禁记录文件 |
isPlayerBan(player: Player) | 判断玩家是否被NCP封禁 |
kickPlayer(player: Player, type: CheckType) | 让NCP踢出一个玩家 |
banPlayer(player: Player, days: Int) | 让NCP封禁一个玩家 |
hasPermission(player: Player, command: String) | 玩家是否拥有使用NCP某命令的权限 |
hasPermissionBypass(player: Player, type: CheckType) | 玩家是否有权限绕过某检查 |
createBypassPermission(permission: String, type: CheckType) | 创建一个绕过某检测的权限 |
removeBypassPermission(permission: String, type: CheckType) | 删除一个绕过某检测的权限 |
clearAllViolations(player: Player) | 清除玩家所有Violation Level |
- 服务器地址: axe.0mc.me
- 服务器端口: 10878
- 插件仍然在开发状态,有问题请发送issue!