ChatLockFilter.java
package dev.aura.bungeechat.filter;
import dev.aura.bungeechat.api.account.BungeeChatAccount;
import dev.aura.bungeechat.api.filter.BlockMessageException;
import dev.aura.bungeechat.api.filter.BungeeChatFilter;
import dev.aura.bungeechat.api.filter.FilterManager;
import dev.aura.bungeechat.message.Messages;
import dev.aura.bungeechat.message.MessagesService;
import dev.aura.bungeechat.permission.Permission;
import dev.aura.bungeechat.permission.PermissionManager;
import java.util.LinkedList;
import java.util.List;
public class ChatLockFilter implements BungeeChatFilter {
private boolean globalLock = false;
private final List<String> lockedServers = new LinkedList<>();
@Override
public String applyFilter(BungeeChatAccount sender, String message) throws BlockMessageException {
if (PermissionManager.hasPermission(sender, Permission.BYPASS_CHAT_LOCK)
|| !((globalLock && MessagesService.getGlobalPredicate().test(sender))
|| lockedServers.contains(sender.getServerName()))) return message;
else throw new ExtendedBlockMessageException(Messages.CHAT_IS_DISABLED, sender, message);
}
@Override
public int getPriority() {
return FilterManager.LOCK_CHAT_FILTER_PRIORITY;
}
public void enableGlobalChatLock() {
globalLock = true;
}
public void enableLocalChatLock(String name) {
lockedServers.add(name);
}
public boolean isGlobalChatLockEnabled() {
return globalLock;
}
public boolean isLocalChatLockEnabled(String name) {
return lockedServers.contains(name);
}
public void disableGlobalChatLock() {
globalLock = false;
}
public void disableLocalChatLock(String name) {
lockedServers.remove(name);
}
}