Minecraft(我的世界)中文论坛

标题: [管理]SnowkUUFixer——限制ic2模式扫描仪扫描特定物品(开源)[1.12.2]

作者: inuyasha01    时间: 2020-3-22 04:14
标题: [管理]SnowkUUFixer——限制ic2模式扫描仪扫描特定物品(开源)[1.12.2]
本帖最后由 inuyasha01 于 2020-3-24 13:30 编辑

原本的IC2-模式扫描仪可以通过该config 来实现对各种机器合成方式的添加
比如,对模式扫描仪来说,它可以扫描更多东西,之类
参见:
https://www.mcmod.cn/post/1125.html
它存在一个局限性:
它很难删掉一个扫描方式除非你直接从ic2的jar内核来更改,
不然删掉的config在再次启动服务器后一定会被jar内核里的内容覆盖掉
但改内核意味着 MD5变动,以及更多不稳定性的出现

此外,对于RPG+MOD服来说,扫描仪还可能存在一个隐性BUG,玩家用复制机RPG物品(?)
此问题在我服尚未验证成功,但依然不排除隐患

因此
咱们提供了一个可行,开源,且不卡服的优化办法(感谢Misaka。提的修改意见)


SnowkUUFixer - 1.1.0

安装此插件以后
会读取config中受限的ID列表
玩家不再能够将此物品放入扫描机中进行复制
杜绝了一系列原版不平衡物品的复制问题

测试了左右键选则限制  以及  Shift+右键快捷放置的限制

已考虑的因素

玩家用手 - 放违禁品到扫描仪中
玩家用Shift快捷键 - 防违禁品到扫描仪中

玩家用 漏斗 - 传送违禁品到扫描仪中
玩家用 IC2 弹出升级 - 传送违禁品到扫描仪中
玩家用 AE 线缆 - 传送违禁品到扫描仪中
玩家用 BC 管道 - 传送违禁品到扫描仪中
玩家用 铁轨+漏斗矿车 - 传送违禁品到扫描仪中
玩家用 植物魔法-多媒体火花物流 - 传送违禁品到扫描仪中 (实现中)


额外建议:
如果你服务器加了Quark模组,一定要限制发射器放置方块的特性
同理
AE模组的放置面板本身也可以绕开Banitem放置违禁品,需要关注
这样做是为了防止:
玩家用方块越权放置方块,绕开各类安全插件对玩家本身的监测


使用说明
放入plugins文件夹,
启动服务器,
待生成config文件后,
更改config文件

配置文件(一定要看)

兼容性
当前版本仅支持Bukkit+Spigot 1.12.2
但前置支持1.8-1.15,所以未来可拓展性很强
也欢迎测试其他版本
期待您的反馈

开源与下载



TODO

v1.1
软前置变硬前置
方块ID解析
reload功能
对植物魔法多媒体火花物流 的研究




最后,如能给你的服务器帮上忙的话,那就太好了
感谢评分~






本插件所用所有代码均为原创,不存在借用/抄袭等行为

作者: Misaka。    时间: 2020-3-22 10:32
漏斗之类的东西有做测试吗?  什么弹出升级啊之类的
作者: inuyasha01    时间: 2020-3-22 11:52
Misaka。 发表于 2020-3-22 10:32
漏斗之类的东西有做测试吗?  什么弹出升级啊之类的

漏斗 潜影盒 弹出升级一类   以及其他MOD的东西无须担心

因为作者就没写复制方式   东西是根本放不进扫描机里的
具体参照帖子前两行那个网址,里面有config介绍,关于scanner和uu的ini文件里   就那些原版的东西

作者: Misaka。    时间: 2020-3-22 12:41
inuyasha01 发表于 2020-3-22 11:52
漏斗 潜影盒 弹出升级一类   以及其他MOD的东西无须担心

因为作者就没写复制方式   东西是根本放不进扫描 ...

en...
我的意思是  使用漏斗把东西放进复制机里之类的
作者: inuyasha01    时间: 2020-3-22 15:09
Misaka。 发表于 2020-3-22 12:41
en...
我的意思是  使用漏斗把东西放进复制机里之类的

那可能还要考虑AE和BC管道吧。。。我看下
感谢提醒


作者: Misaka。    时间: 2020-3-22 16:35
inuyasha01 发表于 2020-3-22 15:09
那可能还要考虑AE和BC管道吧。。。我看下
感谢提醒

可以...嗯
比如 复制机旁边只能放置指定方块之类的 感觉要简单些
作者: ad1131762435    时间: 2020-3-22 18:05
太好了 我们服那群人把我十万金币换飞行权限的NPC道具复制了一组 我头都大了
作者: inuyasha01    时间: 2020-3-23 05:28
本帖最后由 inuyasha01 于 2020-3-23 05:32 编辑
ad1131762435 发表于 2020-3-22 18:05
太好了 我们服那群人把我十万金币换飞行权限的NPC道具复制了一组 我头都大了 ...

感谢提醒,我一开始没想到还可能会出现这种BUG   估计是大多数RPG+MOD服的漏洞吧。。

但我在1.12.2的187版工业2里测试,插件的指令物品即便是原版的素材,复制出来也是空NBT的原始物品,不会复制成带lore或者有功能的物品啊?


有点奇怪,但期待你那边的测试和反馈
作者: inuyasha01    时间: 2020-3-23 05:29
Misaka。 发表于 2020-3-22 16:35
可以...嗯
比如 复制机旁边只能放置指定方块之类的 感觉要简单些

好主意,我尝试实现以下

还考虑如果写漏斗监控  可能会卡服的。。。
作者: ad1131762435    时间: 2020-3-23 12:05
inuyasha01 发表于 2020-3-23 05:28
感谢提醒,我一开始没想到还可能会出现这种BUG   估计是大多数RPG+MOD服的漏洞吧。。

但我在1.12.2的187 ...

是没有改名的物品啦。。因为我是自己想的利用商店扣除他们金币的办法 没想那么多 随便找了个物品就放出去了 现在他们已经不能复制了
作者: inuyasha01    时间: 2020-3-23 15:40
本帖最后由 inuyasha01 于 2020-3-23 16:19 编辑
Misaka。 发表于 2020-3-22 16:35
可以...嗯
比如 复制机旁边只能放置指定方块之类的 感觉要简单些

有点可惜,我看了一下午的API,发现spigot对于MOD中tiles方块的API支持还是不够全
就比如黑色羊毛id 35  数据值15   (35:15)
但所有MOD的tiles 返回数据值都是1。。。  方块名也全获取不到,全都是IC2_TE一个名字,
意思就是,要杀就杀一片,限制扫描仪周边的机器,就相当于限制所有机器周边不能放机器。。

最多最多,把SpigotAPI全巴拉一遍,能获取到这东西是个CraftCustomContainer 如下图


就很奇怪,因为我开始用玩家背包监测的时候可以获取到scanner这个方块名,而非inventory的类里面都只能对多识别出它是一台IC机器,至于是什么机器,无法获取。。。
后来在github看到了这个CraftCustomContainer 的源码。。

它就只调出来个inventory。。。。。。。。


所以。。。玩家手中物品信息可以获取全,背包和箱子等inventory类的内容可以获取全,
但世界内方块相关的东西,还是无法实现。。。

不知道有没有大佬可以实现出来,而且我看Banitem其实也是通过手上的物品来进行获取返回值来限制。。
包括LWC,它能限制方块锁定,但前提是它有个数据库支持。。咱们如果也写数据库,在玩家放下手中方块后就记录下这东西在世界内是不是扫描仪,是可以实现全面监控的。但长期数据库的调取,保存。。服务器后期绝对承受不住,打个比方。  CoreProtect。。。


以至于现在对于你说的     限制扫描仪周边放方块,  和 限制漏斗往扫描仪里输入东西,都很难实现。。

除非有什么办法可以   直接从世界坐标  获取到tiles的物品名称

不然就是一棒子打死,只要名字是IC2_TE全给限制上,漏斗,弹出升级无法往所有机器输入东西, 或者说机器周边无法放任何第二台机器


有点瓶颈了。。



我现在只能建议,用Banitem把模式存储水晶的NBT给dump下来ban掉,针对不同NBT来封禁物品。。但意思也就是,我这插件,用处也就不大了






作者: inuyasha01    时间: 2020-3-23 15:46
ad1131762435 发表于 2020-3-23 12:05
是没有改名的物品啦。。因为我是自己想的利用商店扣除他们金币的办法 没想那么多 随便找了个物品就放出去 ...

有UU机的话商店物品的设置一定要仔细斟酌下。是的
修好了就好
作者: Misaka。    时间: 2020-3-23 16:49
inuyasha01 发表于 2020-3-23 15:40
有点可惜,我看了一下午的API,发现spigot对于MOD中tiles方块的API支持还是不够全
就比如黑色羊毛id 35   ...

太难了吧...这也是没有办法了  或许 可以研究一下你说的那种方法?
ban了nbt不太行  扫描出来后 不去碰他 直接用类似漏斗一样功能的东西 直接输出到下一步
就跳过了检测  XD
作者: xKsyStudio    时间: 2020-3-23 17:02
感谢分享
作者: inuyasha01    时间: 2020-3-24 09:06
本帖最后由 inuyasha01 于 2020-3-24 09:09 编辑
Misaka。 发表于 2020-3-23 16:49
太难了吧...这也是没有办法了  或许 可以研究一下你说的那种方法?
ban了nbt不太行  扫描出来后 不去碰他 ...

一个好消息。  我实现了   23333   换了个思路,  通过读取NBT


找到了可用的API,不过要加前置了就是,测试了资源占用没什么问题


下午更新


作者: Misaka。    时间: 2020-3-24 09:15
inuyasha01 发表于 2020-3-24 09:06
一个好消息。  我实现了   23333   换了个思路,  通过读取NBT

大哥 nb!


作者: inuyasha01    时间: 2020-3-24 12:14
本帖最后由 inuyasha01 于 2020-3-24 12:15 编辑
Misaka。 发表于 2020-3-24 09:15
大哥 nb!

已更新1.1,可以去下载了。



没太理解你说的。。是想单独监测一个坐标上的方块是什么方块么? 这个的话用我这代码的确可行,可以判断单独方块是什么,比如它是AE的什么tile类型,或者是AE的什么方块,当然了 也包括他包含的所有NBT。这要感谢前置API了。可以看看源码
思路就是玩家打碎或者放置的时候监测一下,如果怕资源占用过多就写个if提前中断,只对特定方块生效。这样

作者: Misaka。    时间: 2020-3-24 12:29
inuyasha01 发表于 2020-3-24 12:14
已更新1.1,可以去下载了。

不可带尾缀吗?  
不支持子ID的话  工业2的导线和机器放下后 ID都是一样的
又或者说 插件是检测拿在手上时的id状态,而不是放置在地上以后的吗?
作者: quq666    时间: 2020-3-24 12:30
MCBBS有你更精彩~
作者: inuyasha01    时间: 2020-3-24 12:34
Misaka。 发表于 2020-3-24 12:29
不可带尾缀吗?  
不支持子ID的话  工业2的导线和机器放下后 ID都是一样的
又或者说 插件是检测拿在手上 ...

导线和机器ID不同的。。我特意看了下,不过这几天我把ID解析写好,只是上午懒了下
作者: Misaka。    时间: 2020-3-24 12:40
inuyasha01 发表于 2020-3-24 12:34
导线和机器ID不同的。。我特意看了下,不过这几天我把ID解析写好,只是上午懒了下 ...

不会吧 我特意用创世神查看了 拿在手上时分别是4102和4124 后面的子id不一样
放置在地上后 id都是258 只是子id不一样 一个是10一个是1
作者: inuyasha01    时间: 2020-3-24 12:45
Misaka。 发表于 2020-3-24 12:40
不会吧 我特意用创世神查看了 拿在手上时分别是4102和4124 后面的子id不一样
放置在地上后 id都是258 只是 ...

放在地上以后ID都变成258  是tilesID么 ?

咱们是通过方块ID直接判断的
作者: V无梦    时间: 2020-3-24 17:42
感谢楼主的分享~
作者: inuyasha01    时间: 2020-3-24 18:06
Misaka。 发表于 2020-3-24 12:40
不会吧 我特意用创世神查看了 拿在手上时分别是4102和4124 后面的子id不一样
放置在地上后 id都是258 只是 ...

发现问题了,感谢

我今晚重写下
作者: Misaka。    时间: 2020-3-24 18:34
inuyasha01 发表于 2020-3-24 18:06
发现问题了,感谢

我今晚重写下

写插件真的是一件非常困难的事情呐 加油!
作者: 凉菀彡    时间: 2020-4-9 09:36
好插件!服务器可以用得上!
作者: 结城希亚    时间: 2020-6-6 23:20
ummm看来这个前置得用nms
我还以为和protocollib有什么通用的方法序列化来着
作者: 思念化作海    时间: 2020-7-8 14:35
bannedBlockId下的数字ID改成别的也是不能和工业机器放在一起 像是锁死的

而且 只要先放下扫描机 再在扫描机旁边放机器就可以绕过阻止了
作者: 玖狙梦    时间: 2020-8-17 01:34
前置链接无法打开,楼主大大能不能下载放论坛让下载
作者: 二哈大魔王    时间: 2020-10-29 02:52
如果可以反向填写允许扫描的方块ID就好了。。
作者: 及时宇    时间: 2020-12-8 13:43
感谢,uu复制确实难以管理