d_w___b
本帖最后由 d_w___b 于 2022-12-27 11:06 编辑

听说现在forge1.18.2的新建权限节点得监听net.minecraftforge.server.permission.events.PermissionGatherEvent.Nodes事件,在该事件里注册,但是它具体得怎么注册呢?



无敌三脚猫
啊不是,你想,在物品注册事件里注册物品之类的,用到的都是event点什么什么
自然这里也应该操作的是event点什么什么,具体来说是event.addNodes
1.18权限节点升级了,不再只是布尔值,不过还是布尔值简单
比如
PermissionNode<Boolean> node = new PermissionNode<>("modid", "name", PermissionTypes.BOOLEAN, (player, playerUUID, context) ->{return player.hasPermissions(4);});
最后那个参数是默认……怎么说呢,默认处理器什么的,这里用来让op也视作有这个权限
然后你就可以event.addNodes(node)了
那个node你要存起来,等之后需要判断玩家权限的地方写PermissionAPI.getPermission(player, node)

d_w___b
无敌三脚猫 发表于 2022-12-26 16:44
啊不是,你想,在物品注册事件里注册物品之类的,用到的都是event点什么什么
自然这里也应该操作的是event ...

前面倒是都已经弄好了,可是在判断部分怎么又出问题了呢,前面明明有定义变量node呀,难道是用不了变量node吗?

无敌三脚猫
d_w___b 发表于 2022-12-26 19:52
前面倒是都已经弄好了,可是在判断部分怎么又出问题了呢,前面明明有定义变量node呀,难道是用不了变量no ...

这种就别截图了吧,你直接把全部代码复制粘贴上来反而更清楚

d_w___b
无敌三脚猫 发表于 2022-12-26 21:05
这种就别截图了吧,你直接把全部代码复制粘贴上来反而更清楚


无敌三脚猫

好怪哦,你这则回复我没收到提醒……
你现在的写法,node是局部变量啊,就是,基础的java知识,这里你应该把node保存为静态全局变量,不然后面不能方便地调用到它
检查玩家是否为OP不是这么写的,用player.hasPermissions(4)就是了,这是原版的权限等级,权限等级为4的就是op
现在这个node是boolean型的权限,那PermissionAPI.getPermission(player, node)的返回值也只能是boolean,不会是数字,这么能跟4比较大小呢

d_w___b
无敌三脚猫 发表于 2022-12-27 09:20
好怪哦,你这则回复我没收到提醒……
你现在的写法,node是局部变量啊,就是,基础的java知识,这里你应 ...

player.hasPermissions()用不了啊
另外这个node变量怎么把它变成静态全局的变量,我在变量前加public final static不好使,它也没法用return

下一页 最后一页