Search in sources :

Example 1 with MuteStatusChangeEvent

use of net.ess3.api.events.MuteStatusChangeEvent in project Essentials by drtshock.

the class Commandmute method run.

@Override
public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception {
    boolean nomatch = false;
    if (args.length < 1) {
        throw new NotEnoughArgumentsException();
    }
    User user;
    try {
        user = getPlayer(server, args, 0, true, true);
    } catch (PlayerNotFoundException e) {
        nomatch = true;
        user = ess.getUser(new OfflinePlayer(args[0], ess.getServer()));
    }
    if (!user.getBase().isOnline()) {
        if (sender.isPlayer() && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.mute.offline")) {
            throw new Exception(tl("muteExemptOffline"));
        }
    } else {
        if (user.isAuthorized("essentials.mute.exempt") && sender.isPlayer()) {
            throw new Exception(tl("muteExempt"));
        }
    }
    final boolean willMute = (args.length > 1) ? true : !user.getMuted();
    final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null;
    final MuteStatusChangeEvent event = new MuteStatusChangeEvent(user, controller, willMute);
    ess.getServer().getPluginManager().callEvent(event);
    if (!event.isCancelled()) {
        long muteTimestamp = 0;
        if (args.length > 1) {
            final String time = getFinalArg(args, 1);
            muteTimestamp = DateUtil.parseDateDiff(time, true);
            user.setMuted(true);
        } else {
            user.setMuted(!user.getMuted());
        }
        user.setMuteTimeout(muteTimestamp);
        final boolean muted = user.getMuted();
        String muteTime = DateUtil.formatDateDiff(muteTimestamp);
        if (nomatch) {
            sender.sendMessage(tl("userUnknown", user.getName()));
        }
        if (muted) {
            if (muteTimestamp > 0) {
                sender.sendMessage(tl("mutedPlayerFor", user.getDisplayName(), muteTime));
                user.sendMessage(tl("playerMutedFor", muteTime));
            } else {
                sender.sendMessage(tl("mutedPlayer", user.getDisplayName()));
                user.sendMessage(tl("playerMuted"));
            }
            final String message;
            if (muteTimestamp > 0) {
                message = tl("muteNotifyFor", sender.getSender().getName(), user.getName(), muteTime);
            } else {
                message = tl("muteNotify", sender.getSender().getName(), user.getName());
            }
            server.getLogger().log(Level.INFO, message);
            ess.broadcastMessage("essentials.mute.notify", message);
        } else {
            sender.sendMessage(tl("unmutedPlayer", user.getDisplayName()));
            user.sendMessage(tl("playerUnmuted"));
        }
    }
}
Also used : User(com.earth2me.essentials.User) MuteStatusChangeEvent(net.ess3.api.events.MuteStatusChangeEvent) OfflinePlayer(com.earth2me.essentials.OfflinePlayer)

Example 2 with MuteStatusChangeEvent

use of net.ess3.api.events.MuteStatusChangeEvent in project Essentials by drtshock.

the class User method checkMuteTimeout.

//Returns true if status expired during this check
public boolean checkMuteTimeout(final long currentTime) {
    if (getMuteTimeout() > 0 && getMuteTimeout() < currentTime && isMuted()) {
        final MuteStatusChangeEvent event = new MuteStatusChangeEvent(this, null, false);
        ess.getServer().getPluginManager().callEvent(event);
        if (!event.isCancelled()) {
            setMuteTimeout(0);
            sendMessage(tl("canTalkAgain"));
            setMuted(false);
            return true;
        }
    }
    return false;
}
Also used : MuteStatusChangeEvent(net.ess3.api.events.MuteStatusChangeEvent)

Aggregations

MuteStatusChangeEvent (net.ess3.api.events.MuteStatusChangeEvent)2 OfflinePlayer (com.earth2me.essentials.OfflinePlayer)1 User (com.earth2me.essentials.User)1