Chat/api/src/main/java/com/alttd/chat/ChatImplementation.java

82 lines
2.4 KiB
Java
Raw Normal View History

2021-05-13 12:11:59 +00:00
package com.alttd.chat;
2021-05-13 12:11:59 +00:00
import com.alttd.chat.config.Config;
import com.alttd.chat.database.DatabaseConnection;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.LuckPermsProvider;
2021-05-13 12:11:29 +00:00
import net.luckperms.api.model.group.Group;
import net.luckperms.api.model.user.User;
2021-05-13 12:11:29 +00:00
import java.util.Collection;
import java.util.Comparator;
import java.util.UUID;
2021-05-10 08:57:26 +00:00
public class ChatImplementation implements ChatAPI{
2021-05-15 10:34:19 +00:00
private static ChatAPI instance;
private LuckPerms luckPerms;
2021-05-10 08:35:47 +00:00
private DatabaseConnection databaseConnection;
2021-05-13 12:11:29 +00:00
public ChatImplementation() {
2021-05-10 08:35:47 +00:00
instance = this;
2021-05-13 12:11:29 +00:00
Config.init();
luckPerms = getLuckPerms();
2021-05-15 10:34:19 +00:00
databaseConnection = getDataBase();
}
2021-05-15 10:34:19 +00:00
public static ChatAPI get() {
2021-05-10 08:35:47 +00:00
if(instance == null)
instance = new ChatImplementation();
return instance;
}
@Override
public LuckPerms getLuckPerms() {
if(luckPerms == null)
luckPerms = LuckPermsProvider.get();
return luckPerms;
}
2021-05-10 08:35:47 +00:00
@Override
public DatabaseConnection getDataBase() {
if(databaseConnection == null)
databaseConnection = new DatabaseConnection();
return databaseConnection;
}
2021-05-13 12:11:29 +00:00
@Override
public String getPrefix(UUID uuid) {
return getPrefix(uuid, false);
}
@Override
public String getPrefix(UUID uuid, boolean all) {
// TODO cache these components on load, and return them here?
StringBuilder prefix = new StringBuilder();
LuckPerms luckPerms = getLuckPerms();
User user = luckPerms.getUserManager().getUser(uuid);
if(user == null) return "";
if(all) {
Collection<Group> inheritedGroups = user.getInheritedGroups(user.getQueryOptions());
inheritedGroups.stream()
.sorted(Comparator.comparingInt(o -> o.getWeight().orElse(0)))
.forEach(group -> {
if (Config.PREFIXGROUPS.contains(group.getName())) {
prefix.append("<white>[").append(group.getCachedData().getMetaData().getPrefix()).append("]</white>");
}
});
}
prefix.append("<white>[").append(user.getCachedData().getMetaData().getPrefix()).append("]</white>");
return prefix.toString();
}
@Override
public String getStaffPrefix(UUID uuid) {
return "";
}
2021-05-10 08:35:47 +00:00
}