From c66a01c1a6f404a1fb6c8be9d197f3c83ab450a8 Mon Sep 17 00:00:00 2001 From: Luck Date: Wed, 19 Oct 2016 17:37:26 +0100 Subject: [PATCH] Fix temporary permission expirations never persisting. Fixes #30 --- .../common/core/PermissionHolder.java | 6 ------ .../common/runnables/ExpireTemporaryTask.java | 20 +++++++++---------- .../luckperms/common/users/UserManager.java | 5 ++++- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java b/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java index ffcd6fc01..9f62e785a 100644 --- a/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java +++ b/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java @@ -112,8 +112,6 @@ public abstract class PermissionHolder { this.nodes.clear(); this.nodes.addAll(nodes); } - - auditTemporaryPermissions(); } public void setTransientNodes(Set nodes) { @@ -125,8 +123,6 @@ public abstract class PermissionHolder { this.transientNodes.clear(); this.transientNodes.addAll(nodes); } - - auditTemporaryPermissions(); } @Deprecated @@ -141,8 +137,6 @@ public abstract class PermissionHolder { .map(e -> me.lucko.luckperms.common.core.Node.fromSerialisedNode(e.getKey(), e.getValue())) .collect(Collectors.toList())); } - - auditTemporaryPermissions(); } public void addNodeUnchecked(Node node) { diff --git a/common/src/main/java/me/lucko/luckperms/common/runnables/ExpireTemporaryTask.java b/common/src/main/java/me/lucko/luckperms/common/runnables/ExpireTemporaryTask.java index 2d1a1bcaa..3d31a577f 100644 --- a/common/src/main/java/me/lucko/luckperms/common/runnables/ExpireTemporaryTask.java +++ b/common/src/main/java/me/lucko/luckperms/common/runnables/ExpireTemporaryTask.java @@ -24,7 +24,6 @@ package me.lucko.luckperms.common.runnables; import lombok.AllArgsConstructor; import me.lucko.luckperms.common.LuckPermsPlugin; -import me.lucko.luckperms.common.core.PermissionHolder; import me.lucko.luckperms.common.groups.Group; import me.lucko.luckperms.common.users.User; @@ -34,20 +33,21 @@ public class ExpireTemporaryTask implements Runnable { @Override public void run() { - boolean changes = false; + boolean groupChanges = false; for (Group group : plugin.getGroupManager().getAll().values()) { if (group.auditTemporaryPermissions()) { - changes = true; + plugin.getDatastore().saveGroup(group); + groupChanges = true; } } - if (changes) { - plugin.runUpdateTask(); - return; + for (User user : plugin.getUserManager().getAll().values()) { + if (user.auditTemporaryPermissions()) { + plugin.getDatastore().saveUser(user); + if (!groupChanges) { + user.refreshPermissions(); + } + } } - - plugin.getUserManager().getAll().values().stream() - .filter(PermissionHolder::auditTemporaryPermissions) - .forEach(User::refreshPermissions); } } \ No newline at end of file diff --git a/common/src/main/java/me/lucko/luckperms/common/users/UserManager.java b/common/src/main/java/me/lucko/luckperms/common/users/UserManager.java index 9c381603f..374fdb04d 100644 --- a/common/src/main/java/me/lucko/luckperms/common/users/UserManager.java +++ b/common/src/main/java/me/lucko/luckperms/common/users/UserManager.java @@ -134,7 +134,10 @@ public class UserManager extends AbstractManager { Set players = plugin.getOnlinePlayers(); plugin.doAsync(() -> { for (UUID uuid : players) { - plugin.getDatastore().loadUser(plugin.getUuidCache().getUUID(uuid), "null"); + UUID internal = plugin.getUuidCache().getUUID(uuid); + plugin.getDatastore().loadUser(internal, "null"); + User user = get(internal); + user.refreshPermissions(); } }); });