Implement MuteStatusChangeEvent. Fixes #819 (#832)

This commit is contained in:
Ryan 2016-08-20 19:13:26 -06:00 committed by Blinky™
parent 16e05cc17b
commit dd226dfdcf
2 changed files with 50 additions and 36 deletions

View file

@ -12,6 +12,7 @@ import net.ess3.api.IEssentials;
import net.ess3.api.MaxMoneyException; import net.ess3.api.MaxMoneyException;
import net.ess3.api.events.AfkStatusChangeEvent; import net.ess3.api.events.AfkStatusChangeEvent;
import net.ess3.api.events.JailStatusChangeEvent; import net.ess3.api.events.JailStatusChangeEvent;
import net.ess3.api.events.MuteStatusChangeEvent;
import net.ess3.api.events.UserBalanceUpdateEvent; import net.ess3.api.events.UserBalanceUpdateEvent;
import net.ess3.nms.refl.ReflUtil; import net.ess3.nms.refl.ReflUtil;
@ -505,10 +506,15 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
//Returns true if status expired during this check //Returns true if status expired during this check
public boolean checkMuteTimeout(final long currentTime) { public boolean checkMuteTimeout(final long currentTime) {
if (getMuteTimeout() > 0 && getMuteTimeout() < currentTime && isMuted()) { if (getMuteTimeout() > 0 && getMuteTimeout() < currentTime && isMuted()) {
setMuteTimeout(0); final MuteStatusChangeEvent event = new MuteStatusChangeEvent(this, null, false);
sendMessage(tl("canTalkAgain")); ess.getServer().getPluginManager().callEvent(event);
setMuted(false);
return true; if (!event.isCancelled()) {
setMuteTimeout(0);
sendMessage(tl("canTalkAgain"));
setMuted(false);
return true;
}
} }
return false; return false;
} }

View file

@ -4,6 +4,7 @@ import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.OfflinePlayer; import com.earth2me.essentials.OfflinePlayer;
import com.earth2me.essentials.User; import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.DateUtil;
import net.ess3.api.events.MuteStatusChangeEvent;
import org.bukkit.Server; import org.bukkit.Server;
import java.util.logging.Level; import java.util.logging.Level;
@ -39,42 +40,49 @@ public class Commandmute extends EssentialsCommand {
} }
} }
long muteTimestamp = 0; 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 (args.length > 1) { if (!event.isCancelled()) {
final String time = getFinalArg(args, 1); long muteTimestamp = 0;
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) { if (args.length > 1) {
sender.sendMessage(tl("userUnknown", user.getName())); final String time = getFinalArg(args, 1);
} muteTimestamp = DateUtil.parseDateDiff(time, true);
user.setMuted(true);
if (muted) {
if (muteTimestamp > 0) {
sender.sendMessage(tl("mutedPlayerFor", user.getDisplayName(), muteTime));
user.sendMessage(tl("playerMutedFor", muteTime));
} else { } else {
sender.sendMessage(tl("mutedPlayer", user.getDisplayName())); user.setMuted(!user.getMuted());
user.sendMessage(tl("playerMuted"));
} }
final String message; user.setMuteTimeout(muteTimestamp);
if (muteTimestamp > 0) { final boolean muted = user.getMuted();
message = tl("muteNotifyFor", sender.getSender().getName(), user.getName(), muteTime); 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 { } else {
message = tl("muteNotify", sender.getSender().getName(), user.getName()); sender.sendMessage(tl("unmutedPlayer", user.getDisplayName()));
user.sendMessage(tl("playerUnmuted"));
} }
server.getLogger().log(Level.INFO, message);
ess.broadcastMessage("essentials.mute.notify", message);
} else {
sender.sendMessage(tl("unmutedPlayer", user.getDisplayName()));
user.sendMessage(tl("playerUnmuted"));
} }
} }
} }