9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-23 00:49:20 +00:00

feat(bukkit): 添加 LuckPerms 支持

This commit is contained in:
jhqwqmc
2025-04-12 03:18:39 +08:00
parent b97fa1ee6a
commit 86f795e7a5
2 changed files with 20 additions and 27 deletions

View File

@@ -33,32 +33,26 @@ public class LuckPermsEventListeners {
RegisteredServiceProvider<LuckPerms> provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class);
if (provider != null) {
this.luckPerms = provider.getProvider();
EventBus eventBus = this.luckPerms.getEventBus();
EventSubscription<UserDataRecalculateEvent> onUserPermissionChangeSubscription =
eventBus.subscribe(
plugin,
UserDataRecalculateEvent.class,
this::onUserPermissionChange
);
EventSubscription<GroupDataRecalculateEvent> 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);

View File

@@ -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<String> hasPermissions = cachedEmojiSuggestions().parallelStream()
List<String> hasPermissions = cachedEmojiSuggestions().stream()
.filter(keyword -> {
Emoji emoji = super.emojiMapper.get(keyword);
if (emoji == null) return false;