const broadcastMessage = (server, message) => {
    server.Manager.GetServers().forEach(s => {
        s.Broadcast(message);
    });
};

const plugin = {
    author: 'Amos',
    version: 1.0,
    name: 'Broadcast Bans',

    onEventAsync: function (gameEvent, server) {
        if (!this.enableBroadcastBans) {
            return;
        }

        if (gameEvent.TypeName === 'Ban') {
            let penalty = undefined;
            gameEvent.Origin.AdministeredPenalties?.forEach(p => {
                penalty = p.AutomatedOffense;
            })

            if (gameEvent.Origin.ClientId === 1 && penalty !== undefined) {
                let localization = _localization.LocalizationIndex['PLUGINS_BROADCAST_BAN_ACMESSAGE'].replace('{{targetClient}}', gameEvent.Target.CleanedName);
                broadcastMessage(server, localization);
            } else {
                let localization = _localization.LocalizationIndex['PLUGINS_BROADCAST_BAN_MESSAGE'].replace('{{targetClient}}', gameEvent.Target.CleanedName);
                broadcastMessage(server, localization);
            }
        }
    },

    onLoadAsync: function (manager) {
        this.configHandler = _configHandler;
        this.enableBroadcastBans = this.configHandler.GetValue('EnableBroadcastBans');

        if (this.enableBroadcastBans === undefined) {
            this.enableBroadcastBans = false;
            this.configHandler.SetValue('EnableBroadcastBans', this.enableBroadcastBans);
        }
    },

    onUnloadAsync: function () {
    },

    onTickAsync: function (server) {
    }
};