在一些特殊的服务器,如果服主不希望玩家使用一些附魔的话,可以给玩家一个负权限
-essentials.enchantments.[附魔类型(英文)]或者你想要使用ESS给你划定的安全附魔,而不是不安全的附魔,添加负权限
-essentials.enchantments.allowunsafe
这个是羊羊帖子里的 我试了以下附魔类型都无效...
-essentials.enchantments.[附魔类型(英文)]或者你想要使用ESS给你划定的安全附魔,而不是不安全的附魔,添加负权限
-essentials.enchantments.allowunsafe
这个是羊羊帖子里的 我试了以下附魔类型都无效...
0 保护 protection (头盔,装甲,鞋子,裤子)
1 火焰保护 fire_protection (头盔,装甲,鞋子,裤子)
2 摔落保护 feather_falling (鞋子)
3 爆炸保护 blast_protection (头盔,装甲,鞋子,裤子)
4 弹射物保护 projectile_protection (头盔,装甲,鞋子,裤子)
5 水下呼吸 respiration (头盔)
6 水下速掘 aqua_affinity (头盔)
7 荆棘 thorns (头盔,装甲,鞋子,裤子)
8 深海探索者 depth_strider(鞋子)
无 冰霜行者 frost_walker (鞋子)
本帖最后由 61324 于 2020-8-9 17:15 编辑
https://www.mcbbs.net/forum.php?mod=viewthread&tid=865052
使用这个插件,ban附魔的操作是
随便拿一个带附魔的物品,然后输入/banitem add nl:ench nv:,然后按一下tab,nv的值就会填上了
我这里的值nv:[{lvl:3,id:16},{lvl:2,id:21}] ,一个锋利3,一个抢夺2
我们就拿ban锋利的例子来,锋利的附魔id是16,以上字符串中id就是附魔id,lvl就是附魔等级,
然后我们改一下命令,变成/banitem add nl:ench nv:js|value.indexOf("id:16")!=-1,然后回车
value.indexOf("id:16")!=-1这句话的意思就是把NBT值作为字符串,然后使用JS语法里字符串的indexOf方法来确定id:16这个字符串的位置,如果返回-1,说物品NBT中的ench节点的值不包含id为16的附魔
当然JS解析器的功能肯定不止这么一点,你可以写复杂的语言,不过相对应的耗时就会增加,value变量可以写多个
这里一个复杂的JS解析例子
js|var a=false,b=eval("("+value+")");if(b instanceof Array){for(var i in b){if(b.id==16&&b.lvl>2){a=true;break}}}a;
var a = false,b =eval("(" + value + ")");
if (b instanceof Array) {
for (var i in b) {
if (b.id == 16 && b.lvl > 2) {
a = true;
break
}
}
}
a;
由于ench这个节点的值比较特殊,可以转换成数组,所以可以使用遍历,这段js的作用就是,查找id为16的附魔,如果等级大于2就禁用,只要在js语句最后一句话放上你要返回的结果就可以获取到比较结果了
编辑JS脚本的几个注意事项
·js语句内不能return
·js内的字符串中的特殊字符需要转义,例如var regx="\d{1,}"需要写成var regx="\\d{1,}"
·如果js语句太长了想要直接编辑文件,一定要注意单引号的转义,单引号是配置文件的边界符号,所以如果字符串
中包含了单引号,写到文件里一定要改成两个,所以可以的话,尽量不要使用单引号,可以使用双引号代替单引号
https://www.mcbbs.net/forum.php?mod=viewthread&tid=865052
使用这个插件,ban附魔的操作是
随便拿一个带附魔的物品,然后输入/banitem add nl:ench nv:,然后按一下tab,nv的值就会填上了
我这里的值nv:[{lvl:3,id:16},{lvl:2,id:21}] ,一个锋利3,一个抢夺2
我们就拿ban锋利的例子来,锋利的附魔id是16,以上字符串中id就是附魔id,lvl就是附魔等级,
然后我们改一下命令,变成/banitem add nl:ench nv:js|value.indexOf("id:16")!=-1,然后回车
value.indexOf("id:16")!=-1这句话的意思就是把NBT值作为字符串,然后使用JS语法里字符串的indexOf方法来确定id:16这个字符串的位置,如果返回-1,说物品NBT中的ench节点的值不包含id为16的附魔
当然JS解析器的功能肯定不止这么一点,你可以写复杂的语言,不过相对应的耗时就会增加,value变量可以写多个
这里一个复杂的JS解析例子
js|var a=false,b=eval("("+value+")");if(b instanceof Array){for(var i in b){if(b.id==16&&b.lvl>2){a=true;break}}}a;
var a = false,b =eval("(" + value + ")");
if (b instanceof Array) {
for (var i in b) {
if (b.id == 16 && b.lvl > 2) {
a = true;
break
}
}
}
a;
由于ench这个节点的值比较特殊,可以转换成数组,所以可以使用遍历,这段js的作用就是,查找id为16的附魔,如果等级大于2就禁用,只要在js语句最后一句话放上你要返回的结果就可以获取到比较结果了
编辑JS脚本的几个注意事项
·js语句内不能return
·js内的字符串中的特殊字符需要转义,例如var regx="\d{1,}"需要写成var regx="\\d{1,}"
·如果js语句太长了想要直接编辑文件,一定要注意单引号的转义,单引号是配置文件的边界符号,所以如果字符串
中包含了单引号,写到文件里一定要改成两个,所以可以的话,尽量不要使用单引号,可以使用双引号代替单引号
61324 发表于 2020-8-9 17:13
https://www.mcbbs.net/forum.php?mod=viewthread&tid=865052
使用这个插件,ban附魔的操作是
随便拿一个带 ...
大佬辛苦了! 我的服务器已经加了banitemNBT 请问只是需要拿物品在手中输入
/banitem add nl:ench nv:js|value.indexOf("id:xxx")!=-1 就可以禁止任何级别的附魔嘛
但是我是想让玩家自己不可以进行附魔 但不检测附魔属性[因为我有防具是加了附魔的]
魁梧大睿睿 发表于 2020-8-9 17:20
大佬辛苦了! 我的服务器已经加了banitemNBT 请问只是需要拿物品在手中输入
/banitem add nl:ench nv:js| ...
是的,这个样子是禁用所有等级的附魔
61324 发表于 2020-8-9 17:13
https://www.mcbbs.net/forum.php?mod=viewthread&tid=865052
使用这个插件,ban附魔的操作是
随便拿一个带 ...
我不是想要禁用某个物品不允许出现附魔 我只是不想让玩家附魔指定类型而已啦
61324 发表于 2020-8-9 17:24
是的,这个样子是禁用所有等级的附魔
那举个荔枝 我禁用了让玩家使用钻石甲附魔出弹射保护 但玩家依然可以在我制作的商店购买弹射物保护的钻石甲[且不会回收]
ok,https://www.mcbbs.net/forum.php?mod=viewthread&tid=901306用这个插件可以解决你的问题
[size=0.83em]


附魔.png (7.01 KB, 下载次数: 1)
2019-8-12 18:25 上传
Switch是禁止附魔的开关
FuMoList是禁止附魔的物品ID
设置后,即可让本物品不可附魔
FuMoList是禁止附魔的物品ID
设置后,即可让本物品不可附魔

还有一种方法可以,解决你的问题,比如你菜单出售某氪金物品你把这个氪金物品ban了,在他购买这个氪金物品的时候给予他这个物品的使用权限
举个例子,点击菜单扣除点券执行以下命令:
console:manuaddp {player} BanItem.bypass.*.451
console:give {player} 451:1 1
举个例子,点击菜单扣除点券执行以下命令:
console:manuaddp {player} BanItem.bypass.*.451
console:give {player} 451:1 1