结城希亚
本帖最后由 结城希亚 于 2020-5-9 20:08 编辑

最近遇到个权限问题
我看见有的插件能给类似“essentials.sethome.数值”这种权限
数值是int类型

然后判断这个数值来提高上限什么的

想问具体是怎么判断这个权限的存在和获取这个“数值”的值

第一次碰这类问题有点不懂

java30433
本帖最后由 瘟疫威胁全世界 于 2020-5-9 19:19 编辑

是。。。是大佬诶

https://bukkit.windit.net/javado ... ons/Permission.html
大概就是用
Player.getPermissibles()
得到一个玩家所有权限的set
然后for遍历,getName再contains判断?或者replace什么的
可能这样有点不太简便,等我找找有没有更简单的方法。。

是我沙雕了更本没这方法



海螺螺
LuckPerms 的 meta

SpongeAPI 支持此类情况,相关 API 为 Subject#getOption

结城希亚
海螺螺 发表于 2020-5-9 19:42
LuckPerms 的 meta

SpongeAPI 支持此类情况,相关 API 为 Subject#getOption

gm不行吗,我看ess、地皮插件什么的支持

我是bukkit的

海螺螺
结城希亚 发表于 2020-5-9 19:44
gm不行吗,我看ess、地皮插件什么的支持

我是bukkit的

按照我的记忆,他们是这么做的:

for (i =1; i < N; i++) player.hasPermission("xxx."+i)

支持是支持,丑不丑是另一回事

Ir.Nep
player.getEffectivePermissions()

结城希亚
本帖最后由 结城希亚 于 2020-5-9 20:06 编辑
Ir.Nep 发表于 2020-5-9 19:52
player.getEffectivePermissions()

推了下
应该是这样没错了
  1.                              int max=0;
  2.                                for(PermissionAttachmentInfo player:sender.getEffectivePermissions()) {
  3.                                      if(player.getPermission().startsWith("es.number.")) {
  4.                                             max =Integer.parseInt(player.getPermission().split(".")[2]);
  5.                                             break;
  6.                                     }
  7.                                }
复制代码


感谢帮助

Ir.Nep
结城希亚 发表于 2020-5-9 20:04
推了下
应该是这样没错了

请用split("\\.")

结城希亚
本帖最后由 结城希亚 于 2020-5-9 20:12 编辑

有什么区别吗
我之前一直用split(":")都没问题来着(


好吧,看来以后我要改习惯了

William_Shi
结城希亚 发表于 2020-5-9 20:07
有什么区别吗
我之前一直用split(":")都没问题来着(

split(String regex, int limit)

regex中 "  .  "    需要转义

第一页 上一页 下一页 最后一页