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);
|
RegisteredServiceProvider<LuckPerms> provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class);
|
||||||
if (provider != null) {
|
if (provider != null) {
|
||||||
this.luckPerms = provider.getProvider();
|
this.luckPerms = provider.getProvider();
|
||||||
EventBus eventBus = this.luckPerms.getEventBus();
|
this.registerEventListeners();
|
||||||
EventSubscription<UserDataRecalculateEvent> onUserPermissionChangeSubscription =
|
} else {
|
||||||
eventBus.subscribe(
|
throw new IllegalStateException("Unable to hook into LuckPerms");
|
||||||
plugin,
|
}
|
||||||
UserDataRecalculateEvent.class,
|
}
|
||||||
this::onUserPermissionChange
|
|
||||||
);
|
private void registerEventListeners() {
|
||||||
EventSubscription<GroupDataRecalculateEvent> onGroupPermissionChangeSubscription =
|
EventBus eventBus = this.luckPerms.getEventBus();
|
||||||
eventBus.subscribe(
|
this.subscriptions.add(eventBus.subscribe(this.plugin, UserDataRecalculateEvent.class, this::onUserPermissionChange));
|
||||||
plugin,
|
this.subscriptions.add(eventBus.subscribe(this.plugin, GroupDataRecalculateEvent.class, this::onGroupPermissionChange));
|
||||||
GroupDataRecalculateEvent.class,
|
|
||||||
this::onGroupPermissionChange
|
|
||||||
);
|
|
||||||
this.subscriptions.add(onUserPermissionChangeSubscription);
|
|
||||||
this.subscriptions.add(onGroupPermissionChangeSubscription);
|
|
||||||
} else luckPerms = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unregisterListeners() {
|
public void unregisterListeners() {
|
||||||
for (EventSubscription<?> subscription : this.subscriptions) {
|
this.subscriptions.forEach(subscription -> {
|
||||||
try {
|
try {
|
||||||
subscription.close();
|
subscription.close();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
this.plugin.getLogger().log(Level.WARNING, "Failed to close event subscription", e);
|
this.plugin.getLogger().log(Level.WARNING, "Failed to close event subscription", e);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
this.subscriptions.clear();
|
this.subscriptions.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,14 +64,13 @@ public class LuckPermsEventListeners {
|
|||||||
this.scheduler.asyncLater(() -> {
|
this.scheduler.asyncLater(() -> {
|
||||||
String groupName = event.getGroup().getName();
|
String groupName = event.getGroup().getName();
|
||||||
Bukkit.getOnlinePlayers().forEach(player -> {
|
Bukkit.getOnlinePlayers().forEach(player -> {
|
||||||
UUID playerUUID = player.getUniqueId();
|
UUID uuid = player.getUniqueId();
|
||||||
User onlineUser = this.luckPerms.getUserManager().getUser(playerUUID);
|
User user = luckPerms.getUserManager().getUser(uuid);
|
||||||
if (onlineUser == null) return;
|
if (user == null) return;
|
||||||
boolean isInGroup = onlineUser.getInheritedGroups(onlineUser.getQueryOptions())
|
boolean inGroup = user.getInheritedGroups(user.getQueryOptions()).stream()
|
||||||
.parallelStream()
|
|
||||||
.anyMatch(g -> g.getName().equals(groupName));
|
.anyMatch(g -> g.getName().equals(groupName));
|
||||||
if (isInGroup) {
|
if (inGroup) {
|
||||||
this.consumer.accept(playerUUID, false);
|
this.consumer.accept(uuid, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, 1L, TimeUnit.SECONDS);
|
}, 1L, TimeUnit.SECONDS);
|
||||||
|
|||||||
@@ -46,12 +46,12 @@ public class BukkitFontManager extends AbstractFontManager implements Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delayedInit() {
|
public void delayedInit() {
|
||||||
Bukkit.getPluginManager().registerEvents(this, plugin.bootstrap());
|
|
||||||
if (this.plugin.isPluginEnabled("LuckPerms")) {
|
if (this.plugin.isPluginEnabled("LuckPerms")) {
|
||||||
luckPermsEventListeners = new LuckPermsEventListeners(
|
luckPermsEventListeners = new LuckPermsEventListeners(
|
||||||
plugin.bootstrap(), this::refreshEmojiSuggestions, plugin.scheduler()
|
plugin.bootstrap(), this::refreshEmojiSuggestions, plugin.scheduler()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, plugin.bootstrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -99,7 +99,7 @@ public class BukkitFontManager extends AbstractFontManager implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void addEmojiSuggestions(Player player) {
|
private void addEmojiSuggestions(Player player) {
|
||||||
List<String> hasPermissions = cachedEmojiSuggestions().parallelStream()
|
List<String> hasPermissions = cachedEmojiSuggestions().stream()
|
||||||
.filter(keyword -> {
|
.filter(keyword -> {
|
||||||
Emoji emoji = super.emojiMapper.get(keyword);
|
Emoji emoji = super.emojiMapper.get(keyword);
|
||||||
if (emoji == null) return false;
|
if (emoji == null) return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user