ProjectAres/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/channels/admin/AdminChannel.java

76 lines
2.4 KiB
Java

package tc.oc.commons.bukkit.channels.admin;
import me.anxuiz.settings.Setting;
import me.anxuiz.settings.SettingBuilder;
import me.anxuiz.settings.types.BooleanType;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import tc.oc.api.docs.virtual.ChatDoc;
import tc.oc.commons.bukkit.channels.PermissibleChannel;
import tc.oc.commons.bukkit.channels.SimpleChannel;
import tc.oc.commons.bukkit.chat.PlayerComponent;
import tc.oc.commons.bukkit.permissions.PermissionRegistry;
import tc.oc.commons.bukkit.settings.SettingManagerProvider;
import tc.oc.commons.core.chat.Component;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class AdminChannel extends SimpleChannel implements PermissibleChannel {
public final static Permission PERMISSION = new Permission("ocn.chat.admin", PermissionDefault.OP);
public final static Setting SETTING = new SettingBuilder()
.name("AdminChat")
.alias("ac")
.summary("Show confidential staff chat")
.type(new BooleanType())
.defaultValue(true)
.get();
private final SettingManagerProvider settings;
private final PermissionRegistry permissions;
@Inject AdminChannel(PermissionRegistry permissions, SettingManagerProvider settings) {
this.settings = settings;
this.permissions = permissions;
}
@Override
public void enable() {
permissions.register(PERMISSION);
}
@Override
public Permission permission() {
return PERMISSION;
}
@Override
public boolean viewable(CommandSender sender) {
return !(sender instanceof Player) ||
(PermissibleChannel.super.viewable(sender) &&
settings.getManager((Player) sender).getValue(SETTING, Boolean.class, true));
}
@Override
public BaseComponent prefix() {
return new Component().extra("[").extra(new Component("A", ChatColor.GOLD)).extra("] ");
}
@Override
public BaseComponent format(PlayerComponent player, String message) {
return new Component(player).extra(": ").extra(message);
}
@Override
public ChatDoc.Type type() {
return ChatDoc.Type.ADMIN;
}
}