diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/permission/LuckPermsEventListeners.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/permission/LuckPermsEventListeners.java index ee6c10977..b56a2befe 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/permission/LuckPermsEventListeners.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/permission/LuckPermsEventListeners.java @@ -33,32 +33,26 @@ public class LuckPermsEventListeners { RegisteredServiceProvider provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class); if (provider != null) { this.luckPerms = provider.getProvider(); - EventBus eventBus = this.luckPerms.getEventBus(); - EventSubscription onUserPermissionChangeSubscription = - eventBus.subscribe( - plugin, - UserDataRecalculateEvent.class, - this::onUserPermissionChange - ); - EventSubscription onGroupPermissionChangeSubscription = - eventBus.subscribe( - plugin, - GroupDataRecalculateEvent.class, - this::onGroupPermissionChange - ); - this.subscriptions.add(onUserPermissionChangeSubscription); - this.subscriptions.add(onGroupPermissionChangeSubscription); - } else luckPerms = null; + this.registerEventListeners(); + } else { + throw new IllegalStateException("Unable to hook into LuckPerms"); + } + } + + private void registerEventListeners() { + EventBus eventBus = this.luckPerms.getEventBus(); + this.subscriptions.add(eventBus.subscribe(this.plugin, UserDataRecalculateEvent.class, this::onUserPermissionChange)); + this.subscriptions.add(eventBus.subscribe(this.plugin, GroupDataRecalculateEvent.class, this::onGroupPermissionChange)); } public void unregisterListeners() { - for (EventSubscription subscription : this.subscriptions) { + this.subscriptions.forEach(subscription -> { try { subscription.close(); } catch (Exception e) { this.plugin.getLogger().log(Level.WARNING, "Failed to close event subscription", e); } - } + }); this.subscriptions.clear(); } @@ -70,14 +64,13 @@ public class LuckPermsEventListeners { this.scheduler.asyncLater(() -> { String groupName = event.getGroup().getName(); Bukkit.getOnlinePlayers().forEach(player -> { - UUID playerUUID = player.getUniqueId(); - User onlineUser = this.luckPerms.getUserManager().getUser(playerUUID); - if (onlineUser == null) return; - boolean isInGroup = onlineUser.getInheritedGroups(onlineUser.getQueryOptions()) - .parallelStream() + UUID uuid = player.getUniqueId(); + User user = luckPerms.getUserManager().getUser(uuid); + if (user == null) return; + boolean inGroup = user.getInheritedGroups(user.getQueryOptions()).stream() .anyMatch(g -> g.getName().equals(groupName)); - if (isInGroup) { - this.consumer.accept(playerUUID, false); + if (inGroup) { + this.consumer.accept(uuid, false); } }); }, 1L, TimeUnit.SECONDS); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java index 682084cbb..58856a6b0 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java @@ -46,12 +46,12 @@ public class BukkitFontManager extends AbstractFontManager implements Listener { @Override public void delayedInit() { - Bukkit.getPluginManager().registerEvents(this, plugin.bootstrap()); if (this.plugin.isPluginEnabled("LuckPerms")) { luckPermsEventListeners = new LuckPermsEventListeners( plugin.bootstrap(), this::refreshEmojiSuggestions, plugin.scheduler() ); } + Bukkit.getPluginManager().registerEvents(this, plugin.bootstrap()); } @Override @@ -99,7 +99,7 @@ public class BukkitFontManager extends AbstractFontManager implements Listener { } private void addEmojiSuggestions(Player player) { - List hasPermissions = cachedEmojiSuggestions().parallelStream() + List hasPermissions = cachedEmojiSuggestions().stream() .filter(keyword -> { Emoji emoji = super.emojiMapper.get(keyword); if (emoji == null) return false;