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"));
}
}
}
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;
}
Aggregations