@JsonDetails @ApiModelProperty(value = "The permissions that are assigned to this subject") public Map<String, Boolean> getPermissions() { Map<String, Boolean> res = new HashMap<>(); for (Map<String, Boolean> map : value.getSubjectData().getAllPermissions().values()) { res.putAll(map); } return res; }
@Listener public void init(GamePostInitializationEvent event) { instance = this; initStuff(false); Sponge.getServiceManager().provide(PermissionService.class).ifPresent(svc -> { svc.getDefaults().getTransientSubjectData().setPermission(Sets.newHashSet(), "magibridge.chat", Tristate.TRUE); svc.getDefaults().getTransientSubjectData().setPermission(Sets.newHashSet(), "magibridge.mention", Tristate.TRUE); }); }
public void protect(Player player) { SubjectData subjectData = player.getTransientSubjectData(); Map<Set<Context>, Map<String, Boolean>> permissions = Collections.emptyMap(); if (config.getGeneral().isProtectPermissions()) { permissions = subjectData.getAllPermissions(); subjectData.clearPermissions(); } protections.put(player.getUniqueId(), new ProtectionData(player.getLocation(), permissions)); TeleportConfig teleportConfig = config.getGeneral().getTeleport(); if (teleportConfig.isEnabled()) { teleportConfig.getSpawnLocation().ifPresent(worldLocation -> safeTeleport(player, worldLocation)); } else { Location<World> oldLoc = player.getLocation(); //sometimes players stuck in a wall safeTeleport(player, oldLoc); } }
public void unprotect(Player player) { //notify BungeeCord plugins for the login channel.sendTo(player, buf -> buf.writeUTF(LOGIN_ACTION)); ProtectionData data = protections.remove(player.getUniqueId()); if (data == null) { return; } //teleport if (config.getGeneral().getTeleport().isEnabled()) { safeTeleport(player, data.getOldLocation()); } //restore permissions SubjectData subjectData = player.getTransientSubjectData(); Map<Set<Context>, Map<String, Boolean>> oldPermissions = data.getPermissions(); for (Entry<Set<Context>, Map<String, Boolean>> permission : oldPermissions.entrySet()) { Set<Context> context = permission.getKey(); for (Entry<String, Boolean> perm : permission.getValue().entrySet()) { subjectData.setPermission(context, perm.getKey(), Tristate.fromBoolean(perm.getValue())); } } }