- UID
- 19714
- 阅读权限
- 50
- 注册时间
- 2015-2-10
- 最后登录
- 1970-1-1
- 在线时间
- 小时
- 人气
- 点
- MC币
- 个
- 贡献
- 点
TA的每日心情 | 怒 2020-8-10 02:13 |
---|
签到天数: 157 天 [LV.7]常住居民III
|
本帖最后由 a1093663086 于 2016-9-4 14:18 编辑
×发帖说明:
>配置文件会自动升级,但是更换版本前请先做好备份
×功能:
×更新历史:
V2.3.76
>修复使用remove命令时,如果未指定damage且手上没有物品会报错的问题
>部分代码的优化和完善
>增加物品文件中,各个子id物品将会生成一个用于查看的名称(需要对列表进行remove或add操作后才会生成)
*物品生成的名字为英文,但是如果你装了我重置的BossShop,显示的就是你设置的BossShop的物品的语言
*此版本不是一要更新的
V2.3.74
>修复JS解析式遇到特殊符号时解析结果错误的问题
V2.3.73
>修复被ban物品在手上使用时,仍然无法阻止物品效果生效的bug(所有版本存在)
>修复remove命令在移除整个物品配置节点时,文件中任然保留该配置的问题(02版本以下存在)
>修复remove命令在配置nv参数后无法删除指定配置的问题(01版本以下存在)
>增加多世界支持
>>主配置文件下的WordItemListNotInherit配置节点
>>BanItem世界物品不继承列表
>>格式和例子:
>>WordItemListNotInherit
>> Main:
>> - BanList
>>以上的例子就是说,Main世界的Ban列表不继承默认的列表,需要读取自 BanItem/WorldItem/Main/BanList.yml
>>默认列表为 插件配置文件夹下的三个文件
>>每个世界自己的列表在 BanItem/WorldItem/世界名/下
>>所有的列表类型:
>>BanList 物品黑名单
>>NBTCheckList NBT检查列表
>>NoUseList 物品禁止使用列表
>增加物品NBT值支持JS脚本解析,可以用来ban附魔和范围型NBT
>>关于如何使用请查看帖子说明模块
>增加插件使用情况收集
>增加命令参数w,world用来设置操作的世界
>修正一些命令的使用习惯错误
V2.3.41
修复物品列表操作权限问题
V2.3.4
>修复NMSHelper类初始化错误的问题
>>此问题只在高版本的MC中才会存在,为报错的服务器可以不用更新,具体只要在手上切换物品是没有报错就是没问题的
V2.3.3
>修复使用tellraw消息发送的文本中,点击位置与显示位置偏移的问题
>修复命令Tab bug当命令参数个数大于1个时,最后一个参数如果提前输入字符并且该字符的匹配结果如果只有一个是,Tab不会进行补全的问题
V2.3.2
>增加在方块(地上的)的NBT上搜索黑名单物品
如果要启用该功能,配置节点BanItem.CheckBanItemInBlockNBT必须为true
为了防止管道等物品抽取黑名单物品,可以同时设置配置节点BanItem.CheckBlockAroundWhenPlace为true,以便在玩家放置方块是,检查其周围的方块是否包含黑名单物品(性能消耗较大)
>修复Tab命令补全时,NBT标签的大小写不一致问题
V2.3.1
>增加了对鼠标上物品的黑名单检查
>增加了banitem nbtdump对地上方块的支持
.如果要dump方块的nbt,你的手上不能握着东西
V2.3.0
>修改了一处语言显示错误(/banitem reload list的提示)
>命令ban,use,nbt拆分为add,remove,check,test
对于拆分后的命令需要设置[t,type]列表类型参数,如果未设置,默认为ban
就是说现在
如果想ban一个简单的物品,直接/banitem add就可以了
如果想禁使用 /banitem add t:use
所以这里的命令权限也发生了变化,分别是:
BanItem.item.add
BanItem.item.remove
BanItem.item.test
BanItem.item.check
>修复命令删除列表中的物品后,配置文件中的物品不会少的bug
>修复从NBT中移除物品时,调用的方法错误导致物品非法,而直接造成整个物品被删的bug
>增加对方块一级NBT的检查,(不是在NBT中搜索物品),此项功能解决了同ID物品ban了其中一项后,所有物品都无法放置的bug
>>当前暂未想到获取鼠标所指方块的方法,所以无法做方块的nbtdump
你说地上的植物魔法的花和手上的花一样?,不他们的NBT识别标签不一样,植物魔法拿手上时识别类型的NBT标签是type,但是放地上之后是subTitleName,所以如果你还想ban了方块的(没必要,因为已经放不出来了,除非有特殊手段,但是有特殊功能的物品应该也被ban了,唯一有可能要ban的就是op放出来的方块,不让普通用户交互,这时候你需要用NBTEDIT来查看NBT,毕竟方块的nbtdump没有)
v2.1.0更新
>修复当使用banitem remove命令移除了一个物品所有的NBT标签后,任然保留空NBT的物品,导致整个物品被ban的bug
>修复由于插件初始化顺序的问题导致刚开服没有重载过插件时,禁用/黑名单列表不被载入的问题
>修复使用banitem reload config命令时造成的配置遗留问题(一些模块仍然使用旧的配置,除非重载整个插件)
>修改当启用从NBT中移除物品,将忽视没收配置项
只对在NBT中搜索物品的NBT检查列表物品有效
如果物品本身被ban仍然要看配置是不是没收
>增加了配置节点 ChatPrefix,可以配置插件消息前缀
>增加当玩家切换物品时的黑名单物品的检测,由配置节点BanItem.CheckWhenPlayerSwitchItem决定是否启用
>增加当玩家登录服务器时,对其背包进行黑名单检索,由配置节点BanItem.CheckInvWhenPlayerJoin决定是否启用
当前支持的背包
原版背包(包括装备栏)
Baubles饰品背包
匠魂背包
要是有其他背包(指的是装备栏的,而且是有必要检查的)要求的可以留言说明
>增加命令/banitem scan [玩家] 来扫描指定或者全部在线玩家的背包
如果未指定玩家,将会扫描全体玩家
具体扫描全体玩家会耗多少时间,你们可以试试,要是挺快的以后就可以有事没事用一下了
>配置文件可以保留注释了,但是只有配置文件可以保留注释(测试功能,稳定了再扩展到全部文件)
>禁用列表,黑名单列表,NBT检查列表分开保存到不同文件了 |
×配置文件:
BanList.yml,
>>黑名单列表,此列表内的物品,不能移动,拾取,使用
如果你想禁止法杖使用某个核心,不是把法杖里的某个NBT加到这个列表,而是应该把法杖加到NBT搜素列表,让插件去NBT中找被ban的物品
NoUseList.yml
>>禁止使用列表,此列表内的物品不能使用
NBTCheckList.yml
>>NBT检查列表,如果物品在这个列表里,将在检查物品禁用时在他们的NBT中搜索有没有被ban的物品
>>注意,对于那些需要检查一级NBT的物品,就是拔刀花什么的不需要加入到此列表请注意,在一级NBT搜索指定的标签和在NBT中查找物品不是一个概念,简单来说,就是东西里面放着被ban的东西那些物品才要加到这个列表,比如袋子,法杖,而且你不放到这个列表就不检查,为什么设计这个表呢,直接全部都物品的NBT都搜索不就好了?但是很多物品都是有nbt的,每个物品都在nbt里查找,时间消耗的不是一点两点
主配置文件由于默认生成的配置会自带注释,所以不再提供
BanList格式和NoUseList一样,NBTCheckList也基本差不多
# 这是植物魔法的花 BOTANIA_SPECIALFLOWER: # 植物魔法的id,没啥用,就是给人看的 CurrentId: 742 # ban掉了子id为0的花,也可以设置子id为-1来ban掉所有的子id damage@0: # 此处设置原因,如果原因中有空格,请在两边加上单引号 reason: 你不能用这朵花 # NBT nbt: # 植物魔法区别物品的nbt标签就是type,拔刀的是CurrentItemName type: # 其中的一项,忘了什么花了 - '"kekimurus"' # 你也可以这样写来禁用所有包含这个nbt标签的物品 - '*' # 神秘转移核心 THAUMICTINKERER_FOCUSDISLOCATION: CurrentId: 5129 damage@0: reason: 你不能使用转移核心 # NBT为空,因为核心没有NBT nbt: {} c-1.png (35.97 KB, 下载次数: 68)
下载附件
2016-6-6 16:21 上传 |
×权限,所有权限op拥有(可以通过添加非权限取消):
四个特殊权限需要在配置文件中启用才能使用
# 忽略某个物品全部子id的ban检查
BanItem.bypass.ban.物品数字ID
# 忽略某个物品特定子id的ban检查
BanItem.bypass.ban.物品数字ID@子ID
# 忽略某个物品全部子id的use检查
BanItem.bypass.use.物品数字ID
# 忽略某个物品某个子id的use检查
BanItem.bypass.use.物品数字ID@子ID
=========v 2.3.0新加权限=======
# 操作列表的所有权限
BanItem.item
# 添加Banitem物品到所有列表的权限
BanItem.item.add
# 检查Banitem物品列表中是否存在指定配置的权限
BanItem.item.check
# 从列表移除Banitem物品到权限
BanItem.item.remove
# 测试Banitem物品列表中是适配指定配置的权限
BanItem.item.test
============================
=========v 2.1.0新加权限=======
# 重载[禁用/黑名单/NBT]检查列表
BanItem.reload.list:
# 使用/Banitem scan [玩家] 命令的权限
BanItem.scan
============================
# BanItem所有权限 BanItem.* # 对应/banitem ban 命令权限' BanItem.ban # 不检查禁用和黑名单物品的权限 BanItem.bypass # 不检查禁用物品的权限 BanItem.bypass.use # 自动补全命令的权限 BanItem.cmdcomplete # 获取插件帮助的权限 BanItem.help # 对应/banitem nbt 命令权限 BanItem.nbtdump # 查看参数帮助的权限 BanItem.viewparam # 重载命令的权限 BanItem.reload # 重载插件全部配置的权限 BanItem.reload.all # 重载插件配置的权限 BanItem.reload.config # /Banitem reloadhelp的权限 BanItem.reload.help # 重载插件语言文件文件的权限 BanItem.reload.lang # 对应/banitem show命令 BanItem.show |
×命令 所有命令和参数支持Tab自动补全,/banitem help有详细帮助
/banitem add [参数:值]
添加命令参数配置到指定列表
可选的参数: [t:, type:, i:, item:, d:, damage:, nl:, nbtlabel:, nv:, nbtvalue:, r:, reason:,w:,word:]
参数[t,type]指定要操作哪个列表 --t:ban 黑名单列表 |t:use 禁用列表 |t:nbt nbt检查列表
这个参数是必须的,如果未指定,默认t:ban
参数[i,item]指定要操作的物品id --比如i:chest 箱子 |i:54 还是箱子
这个参数是必须的,如果未指定,默认手上的物品的id
参数[d,damage],指定要操作物品的子id
这个参数是必须的,如果未指定,默认手上的物品子id
参数[nl,nbtlabel],指定操作物品的nbt标签
这个参数不是必须的,tab补全默认会读取手上物品所有的标签
参数[nv,nbtvalue],指定操作物品的nbt值
这个参数不是必须的,必须同时设置[nl,nbtlabel],tab补全会自动读取手上的物品所有的nbt值并和已经设置的nbt标签匹配
参数[r,reason],指定操作物品被[禁/拉黑]的原因
这个参数不是必须的,默认会自动生成一个[该物品已经被禁用]的原因
/banitem remove[参数,值]
从指定列表中移除命令参数的配置
可选的参数: [t:, type:, i:, item:, d:, damage:, nl:, nbtlabel:, nv:, nbtvalue:,w:,word:
参数[t,type]指定要操作哪个列表 --t:ban 黑名单列表 |t:use 禁用列表 |t:nbt nbt检查列表
这个参数是必须的,如果未指定,默认t:ban
参数[i,item]指定要操作的物品id --比如i:chest 箱子 |i:54 还是箱子
这个参数是必须的,如果未指定,默认手上的物品的id
参数[d,damage],指定要操作物品的子id
这个参数不是必须的,如果未指定,将会移除该物品下的所有子id,也就是移除整个物品
参数[nl,nbtlabel],指定操作物品的nbt标签
这个参数不是必须的,tab补全默认会读取手上物品所有的标签,如果未指定,将会移除该子id下所有nbt标
参数[nv,nbtvalue],指定操作物品的nbt值
这个参数不是必须的tab补全会自动读取手上的物品所有的nbt值并和已经设置的nbt标签匹配,如果未指定,将会移除该nbt标签下所有的值
/banitem reload help
获取有关子命令reload的帮助
/banitem reload [all]
重载插件配置
/banitem reload config
重载插件配置
/banitem reload lang
重载语言文件,部分语言可能会有延迟
/banitem reload list
重新加载黑名单,禁用列表,NBT检查名单
/banitem test [参数:值]...
检查命令物品配置项符合指定物品列表具体的哪条配置
[t:, type:, i:, item:, d:, damage:, nl:, nbtlabel:, nv:, nbtvalue:]
参数说明参考 /banitem add
/banitem param [参数标签]
获取插件命令参数的说明
/banitem scan
扫描玩家背包,检查是否有黑名单物品
如果未指定玩家,将扫描全部在线玩家
此时可能会消耗较长时间,导致服务器大面积掉线
/banitem show
显示一个物品的指定或全部Damage在指定列表中的配置
用于查看自己ban了什么东西,如果想删除某项配置.点击蓝色字体可以快速生成删除命令
可选的参数: [i:, item:, d:, damage:, t:, type:,w:,word:
参数[t,type]指定要操作哪个列表 --t:ban 黑名单列表 |t:use 禁用列表 |t:nbt nbt检查列表
这个参数是必须的,如果未指定,默认t:ban
参数[i,item]指定要操作的物品id --比如i:chest 箱子 |i:54 还是箱子
这个参数是必须的,如果未指定,默认手上的物品的id
参数[d,damage],指定要操作物品的子id
这个参数是不是必须的,如果未指定,默认打印该物品指定列表中的所有子id配置
这是/banitem show命令的结果
c-d1.png (13.28 KB, 下载次数: 56)
下载附件
2016-6-9 11:52 上传
这是.banitem show d:1的结果
c-d2.png (11.71 KB, 下载次数: 57)
下载附件
2016-6-9 11:58 上传
/banitem check [参数:值]...
检查命令物品配置项是否存在于指定物品列表
可选的参数: [t:, type:, i:, item:, d:, damage:, nl:, nbtlabel:, nv:, nbtvalue:,w:,word:
参数说明参考/banitem add
/banitem nbtdump
列出手上物品的NBT节点,如果手上没东西,将会尝试列出鼠标所指方块的NBT节点
用于快速生成ban物品nbt的命令
以下是所有可用的参数
n-1.png (51.52 KB, 下载次数: 90)
下载附件
2016-7-24 15:56 上传
其中比较有用的命令就是/banitem nbtdump和/banitem show
对check和test命令的区别是
check:检查命令输入的生成的配置是否完全一样得存在(不比较原因)
test:检查命令输入生成的配置是否存在或者比已有配置判定范围更小的
比如我要判定/banitem test t:ban i:4660 nl:CurrentItemName d:0这一项
d-2.png (21.39 KB, 下载次数: 91)
下载附件
2016-6-4 04:11 上传
虽然子id不一样,但是图片里的配置范围包括了命令的配置,所以是符合 |
×如何配置法杖等物品使用禁用核心(类似还有枪,植物魔法透镜,背包)
×如何配置相同id的[物品/方块(地上的)]
----------------==物品篇==----------------
1.手上先拿着要ban的物品,输入/banitem nbtdump,结果如下(这是一把拔刀)
r.png (42.78 KB, 下载次数: 88)
下载附件
2016-6-11 11:00 上传
2.鼠标移到复制那里,点一下就能快速生成禁用该物品某个NBT节点的命令了,拔刀的话选CurrentItemName
说明一下生成的命令的意思
add就是添加
t:ban就是操作列表类型为ban列表
nl:CustmonMaxDamage ,nl指NBTLabel也可以用全拼,后面的就是NBT标签
nv:"flammpfeil.slashblade.named.nihilul",nv指NBTValue,后面就是对应NBT标签的值
还可以手动指定[d,damage]子id参数为-1,-->d:-1,因为拔刀有耐久
还可以手动指定[nv,nbtvalue]nbt值参数,如果不指定默认使用手上的物品的nbt值
如果你手动输入到了/banitem ban add nl: 按一下Tab就可以出提示,效果和这个差不多
3. 回车后还会有提示,你添加了什么样的物品配置到了文件
s-3.png (24.02 KB, 下载次数: 88)
下载附件
2016-6-4 03:10 上传
4.如果还觉得不清楚,你还可以使用/banitem show命令显示这个物品都ban了什么子id和NBT
对于上面的例子,手里拿着的东西不变,输入/banitem show t:ban
show命令可用的参数有三个
[t,type] 列表类型
[i,item] 物品,如果没有设置,默认使用手上的,可以是数字,也可以是英文
[d:damage] 子id,如果没有设置,默认打印全部的子id
s-2.png (44.12 KB, 下载次数: 89)
下载附件
2016-6-4 03:10 上传
输完命令后出来的结果就是这样子,点击蓝色的字体可以快速生成删除该配置节点的命令
----------------==物品篇结束==---------------- ----------------==方块篇==---------------- 除非你不想玩家和这个方块交互,不然ban相同id的方块并没啥用,对于植物魔法,就算把地上的花ban了,只要撸掉下面的土还是可以233的
1.鼠标对着要ban的方块输入/banitem nbtdump 此时你手上不能拿着东西
2.比如以下的植物魔法
r-1.png (15.97 KB, 下载次数: 56)
下载附件
2016-6-13 19:02 上传
3.接下来就和ban物品一样了,植物魔法方块区别类别的就是subTileName
4.然后地上的花直接撸就不能撸掉了 |
×关于修改配置的注意事项,版本变化请一定要查看
×如何设置物品NBT值来使用JS解析(Ban附魔和泰拉镐为例子)
插件如何判断是使用正常的字符串匹配来比较还是用js解析呢,如果是js脚本,你的nbt值中必须包含%value%这个变量,在插件进行检查的时候,会把%value%这个变量替换成物品的NBT值,然后在进行JS语法的解析,再根据解析结果来确定这个物品的NBT是不是被禁用的
泰拉镐例子
泰拉镐子根据等级不同可以挖不同数量的方块,所以一些服务器会想办法禁掉高等级的泰拉镐,但是泰拉稿子的等级是根据魔力的多少来决定的,是一个范围型的NBT,banitem插件不可能把每个数字都加到Ban列表里,这时候就需要使用JS解析功能,这样输入
js-1.png (4.08 KB, 下载次数: 0)
下载附件
2016-7-24 15:04 上传
命令
nv参数的值设置为%value%>9999999,意思就是这个物品的NBT中mana节点的值只要大于9999999都会被禁用
js-2.png (36.23 KB, 下载次数: 0)
下载附件
2016-7-24 15:04 上传
添加结果
添加之后,如果nv参数中的值带%value%变量,会对这个值进行JS解析的数字和字符串变量替换的测试,如果两项测试都没有通过,那么就认为这个js脚本写错了,需要重写
js-3.png (26.75 KB, 下载次数: 0)
下载附件
2016-7-24 15:11 上传
测试不通过的情况
Ban附魔
随便拿一个带附魔的物品,然后输入/banitem add nl:ench nv:,然后按一下tab,nv的值就会填上了
我这里的值[0:{lvl:2s,id:34s}] ,一个耐久2
js-4.png (4.25 KB, 下载次数: 0)
下载附件
2016-7-24 15:16 上传
我们就拿ban耐久附魔的例子来,耐久的附魔id是34,生成的结果就是id:34s,关于这个值为什么是这样的呢,id就是附魔id,34就是耐久的id,s又是什么呢,s代表34这个数字是short类型,然后我们改一下命令,变成/banitem add nl:ench nv:"%value%".indexOf("id:34s")!=-1,然后回车
js-5.png (34.47 KB, 下载次数: 0)
下载附件
2016-7-24 15:34 上传
"%value%".indexOf("id:34s")!=-1这句话的意思就是把NBT值作为字符串,然后使用JS语法里字符串的indexOf方法来确定id:34s这个字符串的位置,如果返回-1,说物品NBT中的ench节点的值不包含id为34的附魔
当然JS解析器的功能肯定不止这么一点,你可以写复杂的语言,不过相对应的耗时就会增加,%value%变量可以写多个
这里一个复杂的JS解析加正则的例子
var regx="lvl:(\\d{1,})";var r="%value%".match(regx);var flag=false;if(r!=null&&r.length==2){flag=r[1]>=100;};flag;
这段js的作用就是匹配字符串里的lvl:数字类型的子串,然后把lvl后面的数字取出来进行大小比较,如果数字大于100就是true,这里记住,绝对不能return,
只要在js语句最后一句话放上你要返回的结果就可以获取到比较结果了,当然这句js是有漏洞的,这里只匹配第一个lvl子串
编辑JS脚本的几个注意事项
1.js语句内不能return
2.js内的字符串中的特殊字符需要转义,例如var regx="\d{1,}"需要写成var regx="\\d{1,}"
3.如果js语句太长了想要直接编辑文件,一定要注意单引号的转义,单引号是配置文件的边界符号,所以如果字符串中包含了单引号,写到文件里一定要改成两个,所以可以的话,尽量不要使用单引号,可以使用双引号代替单引号 |
×关于判断优先度以及判断方法
×下载地址:
我搬运的插件和mods(还需要什么插件请私信或者回复告知): 插件: MOD: [1.7.10-1.6.2]RPGmod服的福音---超过240个新材料/护甲 |
工具软件:
|
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?加入最MC
x
评分
-
查看全部评分
|