mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-23 08:59:27 +00:00
feat(bukkit): 添加 LuckPerms 支持
This commit is contained in:
@@ -33,32 +33,26 @@ public class LuckPermsEventListeners {
|
||||
RegisteredServiceProvider<LuckPerms> provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class);
|
||||
if (provider != null) {
|
||||
this.luckPerms = provider.getProvider();
|
||||
this.registerEventListeners();
|
||||
} else {
|
||||
throw new IllegalStateException("Unable to hook into LuckPerms");
|
||||
}
|
||||
}
|
||||
|
||||
private void registerEventListeners() {
|
||||
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.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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user