diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index b0928b0aa..e8695bd44 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -590,7 +590,7 @@ public class User extends UserData implements Comparable, IMessageRecipien //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); + final MuteStatusChangeEvent event = new MuteStatusChangeEvent(this, null, false, getMuteTimeout(), getMuteReason()); ess.getServer().getPluginManager().callEvent(event); if (!event.isCancelled()) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandmute.java b/Essentials/src/com/earth2me/essentials/commands/Commandmute.java index a6b9fa90c..f040a9b7c 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandmute.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandmute.java @@ -44,7 +44,7 @@ public class Commandmute extends EssentialsCommand { long muteTimestamp = 0; String time; - String muteReason = ""; + String muteReason = null; if (args.length > 1) { time = args[1]; @@ -63,11 +63,11 @@ public class Commandmute extends EssentialsCommand { final boolean willMute = (args.length > 1) || !user.getMuted(); final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null; - final MuteStatusChangeEvent event = new MuteStatusChangeEvent(user, controller, willMute); + final MuteStatusChangeEvent event = new MuteStatusChangeEvent(user, controller, willMute, muteTimestamp, muteReason); ess.getServer().getPluginManager().callEvent(event); if (!event.isCancelled()) { - if (args.length > 1) { + if (muteReason != null) { user.setMuteReason(muteReason.isEmpty() ? null : muteReason); user.setMuted(true); } else { diff --git a/Essentials/src/net/ess3/api/events/MuteStatusChangeEvent.java b/Essentials/src/net/ess3/api/events/MuteStatusChangeEvent.java index 4f67a1e12..25738c4da 100644 --- a/Essentials/src/net/ess3/api/events/MuteStatusChangeEvent.java +++ b/Essentials/src/net/ess3/api/events/MuteStatusChangeEvent.java @@ -2,9 +2,30 @@ package net.ess3.api.events; import net.ess3.api.IUser; +import java.util.Optional; + public class MuteStatusChangeEvent extends StatusChangeEvent { - public MuteStatusChangeEvent(IUser affected, IUser controller, boolean value) { + private Long timestamp; + private String reason; + + public MuteStatusChangeEvent(IUser affected, IUser controller, boolean value, Long timestamp, String reason) { super(affected, controller, value); + this.timestamp = timestamp; + this.reason = reason == null ? null : (reason.isEmpty() ? null : reason); + } + + /** + * @return If the mute is temporary, returns a present optional with the timestamp; if permanent or unknown, returns an empty optional. + */ + public Optional getTimestamp() { + return Optional.ofNullable(timestamp <= 0 ? null : timestamp); + } + + /** + * @return Returns the reason if provided, otherwise null. + */ + public String getReason() { + return reason; } }