hhttll
本帖最后由 1582952890 于 2017-9-16 20:10 编辑

反无限夜视终极版
SANVR - SCAntiNightVisionReloaded

一切基于客户端的反作弊都是无效的。本插件采用通过服务端限制的方式,真正有效防止无限夜视。

前言
我在N年以前曾写过一个叫做 SCAntiNighVision 的插件。那个插件是我的处女作,问题有很多,而且到后来下载地址也找不到了。>.> 因为这两天不知道被谁挖了出来导致一大堆人问我要下载地址,为了世界的爱与和平,我就重新写了一下那个插件。希望各位喜欢。

言归正传,想必很多服主和熊孩子已经知道了,通过修改 options 的办法可以获得『无限夜视』的效果,挖起矿来简直耍流氓。这个问题一直没有被重视我想很大一部分程度上是因为服主普遍认为这个问题并不会极大地破坏平衡,但是我相信看了下面两幅图后,任何希望维护服务器公平的服主还是会为之一震的吧。


图1:使用无限夜视


图2:不使用无限夜视

为了解决这个蛋疼的问题,这个插件就诞生了。这个插件的原理很简单:每一个玩家都有一个叫做黑暗指数的东西,这个指数一开始是满的。如果这个玩家在黑暗环境中活动,这个指数就会慢慢下降,如果下降达到一定值就会触发一些措施来制裁这个玩家。当然如果这个玩家回到光明的地方,黑暗指数就会上升。如果到达很亮的地方,这个指数就会直接完全恢复。

至于措施有哪些,我们还是一边看配置文件一边说明。配置文件中文的(为了能够支持中文,我搞了一堆反射 >.> 所以在将来的某个版本可能会出问题,不过 1.8.8 - 1.9.4 都测试了没问题。)


图3:配置文件是中文的

配置文件
检查周期
检查周期即每隔多久插件对所有玩家的亮度进行一轮检查。单位是 tick。每 1 秒是 20 tick。

最低可视亮度
如果玩家所处环境亮度低于这个值,那么这个玩家的黑暗指数将会下降。反之则会上升。差距越大,下降/上升速度越快。

黑暗指数立刻恢复亮度
如果玩家所处环境亮度高于这个值,那么这个玩家的黑暗指数将会立即恢复出厂值。

黑暗指数最大值/最小值
玩家的黑暗指数最开始将会是最大值,往下掉不会掉超过最小值,上升亦不会超过最大值。

世界设定
类型为 NORMAL 的世界就是主世界之类的。类型为 NETHER 的世界就是下界之类的。类型为 END 的世界就是末地之类的。由于下界和末地很亮,所以不建议开启。还有一项不工作的世界,出现在这里的世界将不会启用本插件的功能。


图4:在末地,即使亮度为0,不开作弊依然看得清

措施
接下来是重头戏:措施。每一个措施(除了“提示”只有是否开启),都有两个可修改的值:是否开启启用阀值。其中是否开启指定了这个措施是否会被启用。启用阀值指定了当黑暗指数低于何值时触发。(当然你可以把启用阀值设置成几千万,这样效果和不开启是一样的。)接下来逐一介绍几个措施:

提示
提示就是设置当玩家的黑暗指数处于某几个范围时,发送一个 title 给玩家。它的值是一个列表。其中列表的每一项必须是由竖线(|)分割的两个值,前面那个值是一个整数,第二个值是字符串。意思是当黑暗指数低于前面的那个阀值时,向玩家发送后面那个字符串。比如 “160|§c由于此处光线过暗,您的速度已受到影响。” 将会发送给黑暗指数低于160的玩家 “§c由于此处光线过暗,您的速度已受到影响。”


图5:提示的效果

减速
减速就是让玩家在黑暗环境中越走越慢。其中,除了是否开启启用阀值正常速度是一个 0.0 到 1.0 的值。在默认情况下玩家速度是 0.2。除非你在对所有玩家进行加速,否则不要修改这个值。最低减速至是一个 1 到 100 的值,代表了一个百分值,玩家的速度将会慢慢从正常速度转换到 (正常速度*该值/100)。

降低攻击
降低攻击就是让玩家在黑暗环境中攻击力慢慢下降。其中,除了是否开启启用阀值最低减速至是一个 1 到 100 的值,代表了一个百分值,玩家的攻击力将会慢慢从正常值转换到 (正常值*该值/100)。

踢出服务器
踢出服务器就是把黑暗指数过低的玩家踢了。其中,除了是否开启启用阀值踢出理由是一个字符串。指定了将玩家踢出后,显示在该玩家屏幕上的内容。

来自黑暗的伤害
来自黑暗的伤害就是对黑暗中的玩家造成一系列莫名其妙的伤害,造成伤害后,还会对玩家起一个向前的击退效果让玩家以为被身后的奇怪隐形生物击中了(不排除玩家大喊:“OP你别闹了” 的可能性)。其中,除了是否开启启用阀值触发机率是一个 1 到 100 的百分值,指定了在每一检查周期中,会有多少机率对这个玩家造成伤害。造成的伤害中的最大值和最小值决定了这个伤害的量的取值范围。造成击退指定了是否对玩家造成一个假的击退效果。

权限
权限只有一个,sanvr.admin。默认OP,拥有这个权限将会允许该玩家使用以下一系列管理命令。

命令
命令很简单,一共也只有三个:

/sanvr help
显示帮助信息

/sanvr ignore [玩家名]
使一个玩家进入或退出忽略模式。处于忽略模式的人将不受该插件影响。如果没有指定玩家名,将对自己起效。

/sanvr reload
重新载入配置文件。

下载/喷 之前必读
1.本插件没有任何自动更新/自动提交服务器隐私等“统计”功能。我认为这些行为都是耍流氓。
2. 本插件依赖 ProtocolLib,下载地址在此
3. 本插件考虑了喝夜视药水的情况,如果喝了夜视就不会被限制。不要让我在评论里看到有人问“夜视药水怎么办”,我会发飙的。
4. 本插件只支持 1.8+,原因是 1.7 没有 title。
5. 本插件会接管玩家速度。如果你想修改自己的速度,你可以使用速度效果(effect)或者使用 /sanvr ignore 后再使用 ess 的 /speed 命令。
6. 本插件上传到了百度云,中间的 Adf.ly 只是广告。你需要等待五秒并点击右上角的跳过广告来前往下载页。如果你耍流氓不想看广告的话,你可以使用后面提供的度盘分享ID。
7. 本贴不提供源代码,但提供的插件本体没有混淆,你可以用反编译软件进行反编译。如果你的作品中用到了我的代码,希望你能够在发布贴内感谢我一下,当然不是强制的。对于本插件的实现原理有疑问的,或者哪里看不懂的,可以 Q 我。号码在个人资料页。我会尽可能提供帮助的。:)


下载地址 请下载最新版
适用 1.8+:

SCAntiNightVisionReloaded V1.3 分享ID:1c9QZ9O
SCAntiNightVisionReloaded V1.2 分享ID:1qXBPnYG
SCAntiNightVisionReloaded V1.1 分享ID:1sl5p8jb
SCAntiNightVisionReloaded V1.0 分享ID:1o8xn6v4


安装方式
拖入服务端 plugins 文件夹。重启一次服务器,配置文件将会在 plugins/SCAntiNightVisionReloaded/config.yml 处生成。

更新
2016.7.2 V1.0 -> V1.1
- 修复切换世界后/事后喝药水后的缓慢残留问题。
2016.8.11 V1.1 -> V1.2
- 修复半砖 Bug
2016.8.26 V1.2 -> V1.3
- 修复在水下误报
- 修复旁观者模式误报


- 修复所有忽视条件失效 Bug

服主技术讨论群广告
群号:530398148

117779284
快来啊···
1.7.10的快来测试下能否可用····

Jimkimhk
哈哈,插件十分666
非常喜欢你这种简单的插件
且配置全中文,绝对良心符合国人操作习惯- -

小0w0卡
插件很棒!
气死熊孩子!
(夜视药水怎么办?)
233

TimmyOVO
我比较喜欢喝个八分钟夜市药水以后再挖,不会误判吧

YoungMC
不错,回去加在1.10服务器上试试~不知道支持不

hhttll
117779284 发表于 2016-6-20 02:05
快来啊···
1.7.10的快来测试下能否可用····

如果真的需要 1.7.10 的我可以去写一个。但是 1.7.10 没有 title 目测是不支持的

hhttll
Jimkimhk 发表于 2016-6-20 05:36
哈哈,插件十分666
非常喜欢你这种简单的插件
且配置全中文,绝对良心符合国人操作习惯- - ...

其实不简单了,虽然没有反射 nms,但是还是反射了一堆乱七八糟的东西... 这个只能算轻量

KTR
hhttll 发表于 2016-6-20 11:41
其实不简单了,虽然没有反射 nms,但是还是反射了一堆乱七八糟的东西... 这个只能算轻量 ...

楼主,1.9.2支持吗

hhttll
KTR 发表于 2016-6-20 13:03
楼主,1.9.2支持吗

1.8+都支持

hhttll
小0w0卡 发表于 2016-6-20 07:51
插件很棒!
气死熊孩子!
(夜视药水怎么办?)

233 我要发飙了 >.>

xRPQx
喝了夜市药水会不会误判?
求1.7.2版本

hhttll
星燚 发表于 2016-6-20 08:14
我比较喜欢喝个八分钟夜市药水以后再挖,不会误判吧

哇。。你是故意气我的嘛。。。我都说了。。。不会误判夜视药水的拉。。。

hhttll
qq1812538626 发表于 2016-6-20 13:25
喝了夜市药水会不会误判?
求1.7.2版本

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

我不是已经说了嘛。。夜视药水不会误判啊啊啊啊啊啊啊!!!!!(>.> 肯定故意气我)

TimmyOVO
hhttll 发表于 2016-6-20 13:53
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 ...

{:10_503:}对不起,没认真看帖

hhttll
YoungMC 发表于 2016-6-20 09:41
不错,回去加在1.10服务器上试试~不知道支持不

应该是支持的,如果确认可以回复下谢谢

YoungMC
hhttll 发表于 2016-6-20 16:30
应该是支持的,如果确认可以回复下谢谢

已经测试1.10服务器可用.

117779284
117779284 发表于 2016-6-20 02:05
快来啊···
1.7.10的快来测试下能否可用····

取消title 啊·1.7.10以下意思窗口提示。
或者配置文件有title开关选项···

a78116753
直接弄成按照光照的阈值来改变玩家的视野范围不是更好吗

翼LOVE·小爱
急需1.7版本{:10_522:}

hhttll
a78116753 发表于 2016-6-24 06:53
直接弄成按照光照的阈值来改变玩家的视野范围不是更好吗

然而如何才能改变视野呢。你觉得要是有这么简单的办法我会弄那么复杂嘛。

hhttll

未经测试,1.7的话似乎把“提示”那个功能关掉就可以用了。

翼LOVE·小爱
hhttll 发表于 2016-6-24 14:33
未经测试,1.7的话似乎把“提示”那个功能关掉就可以用了。

之前貌似是有1.7版本的0.0

hhttll
翼LOVE·小爱 发表于 2016-6-24 14:40
之前貌似是有1.7版本的0.0

之前那个漏洞多的要死,而且卡、内存泄漏,功能没这个多,不能自定义提示等等等等问题一大堆... 这次这个不是修改也不是升级是完全重写。

~KU~
會誤判嘛 =3= (我才沒有看必讀

hhttll
~KU~ 发表于 2016-6-24 15:43
會誤判嘛 =3= (我才沒有看必讀

如果一个人看不懂中文然后还特别喜欢站在黑暗环境中,那么对于他,会误判。
正常人,不会。

chen1300pc
非常棒的 插件 希望撸主编写更多的插件造福人类

hhttll
chen1300pc 发表于 2016-6-24 18:56
非常棒的 插件 希望撸主编写更多的插件造福人类

233 谢谢支持 :)

YoungMC
今天服务器1.10突然一直报错,报错如下:
java.lang.ArrayIndexOutOfBoundsException
[22:04:46 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:46 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:46 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:47 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:47 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:47 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:48 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:48 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:49 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:49 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:49 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:50 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:50 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:50 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:51 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:51 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:51 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:52 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException
[22:04:52 WARN]: [SCAntiNightVisionReloaded] Task #29 for SCAntiNightVisionReloaded v1.0 generated an exception
java.lang.ArrayIndexOutOfBoundsException

hhttll
YoungMC 发表于 2016-6-24 22:03
今天服务器1.10突然一直报错,报错如下:
java.lang.ArrayIndexOutOfBoundsException
[22:04:46 WARN]: [SC ...

然而居然没有错误日志... 这可咋办。。我去自己试试

hhttll
YoungMC 发表于 2016-6-24 22:03
今天服务器1.10突然一直报错,报错如下:
java.lang.ArrayIndexOutOfBoundsException
[22:04:46 WARN]: [SC ...

某大佬说,你往上面翻,在刚刚开始报错的地方,那里有一个一长段的。我自己测试没有出这个问题,麻烦把那个一长段的报错信息给我谢谢

YoungMC
hhttll 发表于 2016-6-24 22:12
然而居然没有错误日志... 这可咋办。。我去自己试试

论坛很多我还不懂,可以上传日志文件给你吗?报错记录在日志文件里面了  后面刷了太多了  疯狂刷,在日志里面我也没看到你说的很长的那段

a78116753
hhttll 发表于 2016-6-24 14:38
然而如何才能改变视野呢。你觉得要是有这么简单的办法我会弄那么复杂嘛。 ...

也是  如果失明效果有等级区分就好办

q2325290147
星燚 发表于 2016-6-20 14:07
对不起,没认真看帖

666666666666666666666

hhttll
a78116753 发表于 2016-6-25 08:51
也是  如果失明效果有等级区分就好办

失明效果啥的都可以用Mod取消掉的说...

fuzhu-huang
只能说这款插件是反作弊系统的其一,大部分反作弊系统都带夜视终结,而且从文件上看也不是最轻量

hhttll
fuzhu-huang 发表于 2016-6-25 16:12
只能说这款插件是反作弊系统的其一,大部分反作弊系统都带夜视终结,而且从文件上看也不是最轻量 ...

来吧,你说说看哪个反作弊系统带夜视终结
(如果你的例子是某个mod的话,我想说那个的破解已经烂大街了...)

BB套
动态光源怎么办?  那个 光源是假的吧

hhttll
BB套 发表于 2016-6-26 16:53
动态光源怎么办?  那个 光源是假的吧

动态光源在非动态光源服务器视为作弊。如果是服主支持动态光源,那我也没办法

我的煞笔
图炸了 看不了图

hhttll

我确定没有挂

1207741285
1.7.10版本有吗

hhttll

1.8 的版本关闭 title 功能或许能用。你可以测试下

Fisherman_wcz
星燚 发表于 2016-6-20 08:14
我比较喜欢喝个八分钟夜市药水以后再挖,不会误判吧

眼熟的头像

月中行
这插件很凶残阿。。。熊孩子哪跑?

hhttll

wtf。。居然在我的帖子里面认熟人。。。

Fisherman_wcz
hhttll 发表于 2016-7-1 17:31
wtf。。居然在我的帖子里面认熟人。。。

顶,顶,顶,路过顶贴{:10_523:}

zhongzixian
有玩家反馈说,在半砖或台阶上会误判

1344566058
就是这个插件,想当年,我还只是个玩家,玩的那个服务器传送点是固定的,我传送去野外,结果被熊孩子堵了,因为这个插件,都挖不了方块,一直被关在里面。

hhttll
zhongzixian 发表于 2016-7-1 21:21
有玩家反馈说,在半砖或台阶上会误判

好的我去看看是什么情况。(PS. 我大概猜到了原因...应该是 bukkit 的锅,应该可以防)

下一页 最后一页