• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~
Banitem With Nbt —— NBT禁用物品,支持相同Id[1.7-1.15]

开源 工具 世界管理 其他 Banitem With Nbt —— NBT禁用物品,支持相同Id[1.7-1.15] 3.2.5

版权类型
转载
插件中文名称
物品禁用、物品封禁
插件英文名称
Banitem With Nbt
原帖地址
https://gitee.com/Imcc/BanItem
支持的核心(服务端)
  1. Spigot
  2. Paper
  3. 其他核心
语言支持
中文(简体)
前置组件
任意一款权限插件(可选)
适配版本(Java)
  1. 1.15
  2. 1.14
  3. 1.13
  4. 1.12
  5. 1.11
  6. 1.10
  7. 1.9
  8. 1.8
  9. 1.7
站内不提供插件下载,请到原帖下载!
介绍内容大多都来自:https://web.archive.org/web/20181013052631/http://www.mcbbs.net/thread-552368-1-1.html


  • 根据多级NBT的值(支持JavaScript,正则表达式解析)来禁用物品和地上的方块
  • 在NBT上搜索,移除禁用物品
  • 玩家切换手上物品时检查物品权限
  • 玩家登陆时检查背包栏,和已经支持的mod的背包来检查物品权限(当前支持的背包有:Baubles、匠魂背包、旅行者装备背包)
  • 使用命令检查指定玩家背包
  • 没事无聊可以看看物品的NBT

权限
解释
子权限
示例格式
BanItem.*
插件所有权限
BanItem.bypass
无视物品封禁继续使用
BanItem.bypass跳过禁用物品检查的权限(若想跳过特定物品特定事件检查则见子权限格式)
注:Flag见文章下面说明,若Flag设置成“*”则代表绕过所有Flag检查权限
注:使用前请去config配置文件内开启CheckItemId和CheckItemDamage这两个选项,否则给了权限也还是不可使用!!!
BanItem.bypass.<禁用Flag>.<物品类型>@<物品子id>@<NBT禁用节点>BanItem.bypass.*.1(跳过物品ID为1的检查)
BanItem.bypass.*.279@57(跳过物品ID为279:1的检查)
BanItem.cmd
所有命令操作的权限
BanItem.cmd.help
BanItem.cmd.item BanItem.cmd.nbt
BanItem.cmd.nbtdump
BanItem.cmd.scan
BanItem.cmd.show
BanItem.cmd.param
BanItem.cmd.help
BanItem.cmd.add
BanItem.cmd.remove
BanItem.cmd.nbt

  • BanItem.cmd.nbt.add
  • BanItem.cmd.nbt.remove
  • BanItem.cmd.nbt.show
BanItem.cmd.reload
  • BanItem.cmd.reload.config: true
  • BanItem.cmd.reload.help
  • BanItem.cmd.reload.lang
  • BanItem.cmd.reload.list
  • BanItem.cmd.reload.plugin
BanItem.cmdcomplete
自动补全命令的权限

命令
解释
补充
/banitem add [参数:值]
添加物品配置到禁用物品列表
可选参数:
item,damage,world,nbtlabel,nbtvalue,flag,reason,confiscate,preferlist,defnbtvalue
/banitem remove [参数:值]
从禁用物品列表中移除物品配置
可选参数:
item,damage,world,nbtlabel,nbtvalue,preferlist
/banitem show [参数:值]
显示指定物品id在禁用物品列表中的配置
可选参数:
item,damage,world
/banitem nbt add [参数:值]
添加物品配置到NBT物品检查列表
可选参数:
item,damage
/banitem nbt remove [参数:值]
从NBT物品检查列表移除物品配置
可选参数:
item,damage
/banitem nbt show [参数:值]
显示指定物品id在NBT物品检查列表中的配置
可选参数:
item,damage
/banitem nbtdump
显示当前手上物品的NBT,若当前手上物品为空,将尝试显示鼠标所指方块的NBT
可选参数:
item,damage
/banitem param [参数标签]
显示命令参数的作用
/banItem help [页数]
插件帮助
/banitem reload
插件重载
/banitem reload config
/banitem reload lang
/banitem reload list
/banitem reload plugin

[TABLE=collapse,right]
[TR]
[TD]
参数名
[/TD]

[TD]
解释
[/TD]

[TD]
补充
[/TD]
[/TR]
[TR]
[TD]
DefNBTValue
[/TD]

[TD]
设置在某个物品因为某个NBT节点被禁用时,将该NBT节点的值替换成的值
[/TD]

[TD]比如拔刀某刀被ban,那么此时会自动替换成什么拔刀

简写:dnv
[/TD]
[/TR]
[TR]
[TD]
PreferList
[/TD]

[TD]
设置操作的自定义禁用列表
[/TD]

[TD]简写:pl[/TD]
[/TR]
[TR]
[TD]
Confiscate:<true或false>
[/TD]

[TD]
设置是否没收物品
[/TD]

[TD]可用值:t,true,yes,f,false,no

简写:c
[/TD]
[/TR]
[TR]
[TD]
Damage:<值>
[/TD]

[TD]
设置操作的物品的子id,-1代表全部子id
[/TD]

[TD]简写:d[/TD]
[/TR]
[TR]
[TD]
Flag:<值>
[/TD]

[TD]
设置物品禁用的权限,用逗号分隔多个权限
[/TD]

[TD]Flag参数见下方表格

简写:f
[/TD]
[/TR]
[TR]
[TD]
Item:<物品ID或名称>
[/TD]

[TD]
对哪个物品进行操作
[/TD]

[TD]比如:i:279(对物品ID为279的进行操作)

简写:i
[/TD]
[/TR]
[TR]
[TD]
NBTLabel:<值>
[/TD]

[TD]
设置操作的物品的NBT标签
[/TD]

[TD]简写:nl[/TD]
[/TR]
[TR]
[TD]
NBTValue:<值>
[/TD]

[TD]
设置操作的物品的NBT标签的值
[/TD]

[TD]简写:nv[/TD]
[/TR]
[TR]
[TD]
Reason:<理由>
[/TD]

[TD]
设置物品禁用的原因
[/TD]

[TD]简写:r[/TD]
[/TR]
[TR]
[TD]
World:<值>
[/TD]

[TD]
设置操作的世界
[/TD]

[TD]用途最后讲解

简写:w
[/TD]
[/TR]
[/TABLE]

名称
解释
drop
物品丢弃
pickup
物品拾取
break
方块破坏
craft
取出合成物品
hold
容器或物品栏中切换物品拿着东西事件
interact
交互方块
inv
物品栏内的监听
place
方块放置
use
使用物品
useinnbt
在NBT中使用的权限

日期
版本
内容
2020年3月26日
3.2.5
移除语言API以增强兼容性
允许自动添加世界继承配置
1.13-1.15.2兼容
2020年3月18日
3.2.41
更改world参数的默认值为全局世界
2020年2月18日
3.2.40
将World参数检查放到子命令中,为后续命令添加继承关系做准备
更换NBTGetter为CacheGetter
2017年7月17日
3.2.2
修复禁用原因不翻译颜色字符的问题
修复继承配置如果未配置Inhert节点时,未继承全局配置的问题
新增非继承禁用列表,只需要在禁用列表前加上短横“-”就可以了,短横后面没有空格
2017年6月26日
3.2.1
修复如果Yaml格式稍微不符合规范,可能会造成服务器直接假死的问题
修复禁用列表混合的一些错误
修复添加JavaScript类型的NBT时,测试结果总是不通过的问题
修正物品被禁用时,检查的权限子id为当前物品
增加多级NBT标齐支持,多级NBT标签路径写法有一定规则,建议使用自动补全
nbtdump命令也同时升级了,可以点开查看类型为NBTTagCompound的NBT
增加在玩家切换世界时,对玩家背包物品的检查,可在配置中配置是否开启
damage与world两个参数支持使用星号作为值
新增命令参数DefNBTValue,缩写为dnv;用于在物品未设置没收时替换物品被禁用的NBT
2017年2月7日
3.0.35
修复语言API初始化错误的问题
2017年2月6日
3.0.34
修复区块检查可能会报错的问题
修复直接使用/banitem nbt命令会报错的问题
2017年2月2日
3.0.32
修复add命令在未指定nv,nbtvalue参数的情况下会报错的问题
修复区块检查可能会报错的问题
2017年1月21日
3.0.31
修复"BanItem.bypass.<flag名字>.<物品id>"权限无效的问题
增加了新的跳过物品检查的权限"BanItem.bypass.*.<物品id>"
此权限可以跳过禁了所有Flag的某个物品,避免了以往需要每个权限都要给一次的麻烦
2017年01月20日
3.0.3
修复默认原因和默认没收选项无效的问题
物品第一级节点下的Flags如果包含全部的权限,将不保存到配置中
增加两个新的Flag:drop和pickup
2017年01月13日
3.0.22
修复nbt命令d在未设置参数时会发生错误的问题
2017年01月07日
3.0.21
add与remove命令在未设置d参数且当前手上有物品时会自动设置d参数的值为当前手上物品子id
2017年01月02日
3.0.2
禁用继承列表在只配置了全局列表的情况下,无法禁用物品的bug
2016年12月31日
3.0.14
增加了在重载自定义禁用列表时,会输出禁用列表加载的物品数量
玩家登陆检查时,增加了检查了谁的输出
修复未载入禁止设置为空气的方块列表的问题
2016年12月23日
3.0.11
增加了插件状态机制,防止多次合并禁用列表操作
修复未启用信息收集系统的问题
2016年12月21日
3.0.1
增加在区块加载时,检查区块内方块是否为黑名单方块并进行没收
移除了JavaScript类型的NBT值在加载时,控制台输出的测试调试信息
修复damage节点每次保存后都会被重新写入名字的问题
修复add命令在添加新物品到禁用列表时,聊天窗口中物品节点下不显示禁用的Flag和原因的问题
修复plugin.yml中BanItem.cmd的子权限BanItem.cmd.param名字错误的问题
2016年12月20日
3.0.04
修复show、nbtdump等会在聊天窗口中生成可点击命令在使用时的报错问题
2016年12月19日
3.0.03
一些漏洞修复
2016年12月18日
3.0.02
修复信息收集系统未初始化导致的信息收集失败的问题
2016年12月17日
3.0.01
修复命令参数d、damage在tab补全时,无法补全当前手上的子id的问题
2016年12月17日
3.0.0
版本正式升级至3.0。请注意,3.0版本的配置与2.x的配置和物品列表不兼容

先手上拿着物品输入/banitem add
1-1-png.92016

如图所示,这样就完成了物品禁用!
1-2-gif.92015

注:默认是会直接没收物品的,如果你不想物品被没收可以使用这个命令封禁物品“/banitem add c:f

先手上拿着物品输入/banitem add damage:-1
2-1-png.92014

如图所示,这样就完成了物品禁用!
2-2-gif.92013

先手上拿着法杖输入/banitem nbt add d:-1( 这个并不是ban物品的命令,只是把法杖加到NBT检查列表)
3-1-png.92012

拿着要ban的核心输入/banitem add f:useinnbt c:f(此命令值禁止了核心在NBT中使用的权限)
3-2-png.92011

注:这里我ban核心的时候设置了“c:f”就不会没收,所以会呈现如下图例子
3-3-gif.92010

手上先拿着要ban的物品;输入/banitem nbtdump,结果如下(这是一把拔刀)
4-1-png.92009

鼠标移到”复制“那里,点一下就能快速生成禁用该物品某个NBT节点的命令了;拔刀的话选CurrentItemName
如图所示,这样就完成了物品禁用!

4-2-png.92008

手拿附魔书(其他附魔的物品也可以)并输入/banitem nbtdump
5-1-png.92007

然后把StoredEnchantments节点值给拷贝下来(这里我用的是时运3附魔,所以我的结果是“[{lvl:3,id:35}]”)
我讲解下这拷贝的值含义:lvl:3表示这个附魔的等级(比如时运3),id:35表示这个附魔的ID(比如时运)

5-2-png.92006

然后手拿工具输入命令:/banitem add nl:ench nv:js|value.indexOf("id:35")!=-1(含义就是手中物品只要出现时运附魔就不可以使用!)
5-3-gif.92005

如果你觉得下面教程比较复制,那我推荐你使用UseWorld插件来禁止某个世界使用某个物品
这里我以豆腐工艺MOD的工具为例子,禁止它在PlotSquared世界使用
手拿物品输入/banitem add c:f d:-1 w:PlotSquared

命令含义:将手上工具禁止在PlotSquared世界使用
6-1-png.92017
6-2-png.92018
注:若要在多个世界封禁该物品请一个一个世界来,参数“w”后面不能用逗号分割多个世界

  • 问:怎么禁止物品使用,但是还能参与合成
  • 答:手拿要禁用的物品,输入/banitem add flag:use confiscate:false

  • 问:怎么禁止熊孩子在主城丢铀238害人
  • 答:可以通过禁掉drop权限达到目的/bi add flag:drop confiscate:false

  • 问:我用命令/bi add禁了某个物品,怎么给某个玩家权限
  • 答:首先,你需要将主配置Permission.CheckItemId设置为true;然后,给该玩家添加BanItem.bypass.*.<物品id>的权限
后退
顶部 底部