diff --git a/common/src/main/java/me/lucko/luckperms/common/LuckPermsPlugin.java b/common/src/main/java/me/lucko/luckperms/common/LuckPermsPlugin.java index 3235bd44..2332983f 100644 --- a/common/src/main/java/me/lucko/luckperms/common/LuckPermsPlugin.java +++ b/common/src/main/java/me/lucko/luckperms/common/LuckPermsPlugin.java @@ -366,4 +366,11 @@ public interface LuckPermsPlugin { */ BufferedRequest getUpdateTaskBuffer(); + /** + * Called at the end of the sync task. + */ + default void onPostUpdate() { + + } + } diff --git a/common/src/main/java/me/lucko/luckperms/common/tasks/UpdateTask.java b/common/src/main/java/me/lucko/luckperms/common/tasks/UpdateTask.java index de482763..d06b9ae4 100644 --- a/common/src/main/java/me/lucko/luckperms/common/tasks/UpdateTask.java +++ b/common/src/main/java/me/lucko/luckperms/common/tasks/UpdateTask.java @@ -54,6 +54,8 @@ public class UpdateTask implements Runnable { // Refresh all online users. plugin.getUserManager().updateAllUsers(); + plugin.onPostUpdate(); + plugin.getApiProvider().fireEvent(new PostSyncEvent()); } } diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java index f3be15e8..6d1f5369 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java @@ -62,6 +62,8 @@ import me.lucko.luckperms.sponge.managers.SpongeGroupManager; import me.lucko.luckperms.sponge.managers.SpongeUserManager; import me.lucko.luckperms.sponge.service.LuckPermsService; import me.lucko.luckperms.sponge.service.ServiceCacheHousekeepingTask; +import me.lucko.luckperms.sponge.service.base.LPSubjectCollection; +import me.lucko.luckperms.sponge.service.persisted.PersistedCollection; import me.lucko.luckperms.sponge.timings.LPTimings; import me.lucko.luckperms.sponge.utils.VersionData; @@ -305,6 +307,16 @@ public class LPSpongePlugin implements LuckPermsPlugin { } } + @Override + public void onPostUpdate() { + for (LPSubjectCollection collection : service.getCollections().values()) { + if (collection instanceof PersistedCollection) { + ((PersistedCollection) collection).loadAll(); + } + } + service.invalidateParentCaches(); + } + @SuppressWarnings("ResultOfMethodCallIgnored") @Override public File getMainDir() {