From 122232a0e709475b596ab0dbaa97be1c293e11bf Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 5 Oct 2013 02:11:39 +0100 Subject: [PATCH] Add more API template and implement nick change event. --- .../essentials/commands/Commandnick.java | 23 +++++-- .../ess3/api/events/AfkStatusChangeEvent.java | 6 +- .../ess3/api/events/GodStatusChangeEvent.java | 6 +- .../api/events/IgnoreStatusChangeEvent.java | 6 +- .../api/events/JailStatusChangeEvent.java | 6 +- .../api/events/MuteStatusChangeEvent.java | 8 ++- .../net/ess3/api/events/NickChangeEvent.java | 25 +++++++ .../net/ess3/api/events/StateChangeEvent.java | 65 +++++++++++++++++++ .../ess3/api/events/StatusChangeEvent.java | 58 +++++------------ 9 files changed, 146 insertions(+), 57 deletions(-) create mode 100644 Essentials/src/net/ess3/api/events/NickChangeEvent.java create mode 100644 Essentials/src/net/ess3/api/events/StateChangeEvent.java diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandnick.java b/Essentials/src/com/earth2me/essentials/commands/Commandnick.java index 44be445b9..25c7207a0 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandnick.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandnick.java @@ -4,6 +4,8 @@ import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.User; import com.earth2me.essentials.utils.FormatUtil; import java.util.Locale; +import net.ess3.api.events.LocalChatSpyEvent; +import net.ess3.api.events.NickChangeEvent; import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -62,14 +64,12 @@ public class Commandnick extends EssentialsLoopCommand final String nick = args[0]; if (target.getName().equalsIgnoreCase(nick)) { - target.setNickname(nick); - target.setDisplayNick(); + setNickname(server, sender, target, nick); target.sendMessage(_("nickNoMore")); } else if ("off".equalsIgnoreCase(nick)) { - target.setNickname(null); - target.setDisplayNick(); + setNickname(server, sender, target, null); target.sendMessage(_("nickNoMore")); } else if (nickInUse(server, target, nick)) @@ -78,8 +78,7 @@ public class Commandnick extends EssentialsLoopCommand } else { - target.setNickname(nick); - target.setDisplayNick(); + setNickname(server, sender, target, nick); target.sendMessage(_("nickSet", target.getDisplayName())); } } @@ -115,4 +114,16 @@ public class Commandnick extends EssentialsLoopCommand } return false; } + + private void setNickname(final Server server, final CommandSender sender, final User target, final String nickname) + { + final User controller = sender instanceof Player ? ess.getUser(sender) : null; + final NickChangeEvent nickEvent = new NickChangeEvent(controller, target, nickname); + server.getPluginManager().callEvent(nickEvent); + if (!nickEvent.isCancelled()) + { + target.setNickname(nickname); + target.setDisplayNick(); + } + } } diff --git a/Essentials/src/net/ess3/api/events/AfkStatusChangeEvent.java b/Essentials/src/net/ess3/api/events/AfkStatusChangeEvent.java index 2d76b46d5..18110178d 100644 --- a/Essentials/src/net/ess3/api/events/AfkStatusChangeEvent.java +++ b/Essentials/src/net/ess3/api/events/AfkStatusChangeEvent.java @@ -1,10 +1,12 @@ package net.ess3.api.events; +import net.ess3.api.IUser; + public class AfkStatusChangeEvent extends StatusChangeEvent { - public AfkStatusChangeEvent() + public AfkStatusChangeEvent(IUser affected, IUser controller, boolean value) { - + super(affected, controller, value); } } diff --git a/Essentials/src/net/ess3/api/events/GodStatusChangeEvent.java b/Essentials/src/net/ess3/api/events/GodStatusChangeEvent.java index 857abf818..2d141cf6d 100644 --- a/Essentials/src/net/ess3/api/events/GodStatusChangeEvent.java +++ b/Essentials/src/net/ess3/api/events/GodStatusChangeEvent.java @@ -1,10 +1,12 @@ package net.ess3.api.events; +import net.ess3.api.IUser; + public class GodStatusChangeEvent extends StatusChangeEvent { - public GodStatusChangeEvent() + public GodStatusChangeEvent(IUser affected, IUser controller, boolean value) { - + super(affected, controller, value); } } diff --git a/Essentials/src/net/ess3/api/events/IgnoreStatusChangeEvent.java b/Essentials/src/net/ess3/api/events/IgnoreStatusChangeEvent.java index 14baf6c4a..27c23b50c 100644 --- a/Essentials/src/net/ess3/api/events/IgnoreStatusChangeEvent.java +++ b/Essentials/src/net/ess3/api/events/IgnoreStatusChangeEvent.java @@ -1,11 +1,13 @@ package net.ess3.api.events; +import net.ess3.api.IUser; + public class IgnoreStatusChangeEvent extends StatusChangeEvent { - public IgnoreStatusChangeEvent() + public IgnoreStatusChangeEvent(IUser affected, IUser controller, boolean value) { - + super(affected, controller, value); } } diff --git a/Essentials/src/net/ess3/api/events/JailStatusChangeEvent.java b/Essentials/src/net/ess3/api/events/JailStatusChangeEvent.java index 25947f863..ff884d1a2 100644 --- a/Essentials/src/net/ess3/api/events/JailStatusChangeEvent.java +++ b/Essentials/src/net/ess3/api/events/JailStatusChangeEvent.java @@ -1,10 +1,12 @@ package net.ess3.api.events; +import net.ess3.api.IUser; + public class JailStatusChangeEvent extends StatusChangeEvent { - public JailStatusChangeEvent() + public JailStatusChangeEvent(IUser affected, IUser controller, boolean value) { - + super(affected, controller, value); } } \ No newline at end of file diff --git a/Essentials/src/net/ess3/api/events/MuteStatusChangeEvent.java b/Essentials/src/net/ess3/api/events/MuteStatusChangeEvent.java index f5d4bf866..3eb8885b2 100644 --- a/Essentials/src/net/ess3/api/events/MuteStatusChangeEvent.java +++ b/Essentials/src/net/ess3/api/events/MuteStatusChangeEvent.java @@ -1,10 +1,14 @@ package net.ess3.api.events; +import net.ess3.api.IUser; + public class MuteStatusChangeEvent extends StatusChangeEvent { - public MuteStatusChangeEvent() + + public MuteStatusChangeEvent(IUser affected, IUser controller, boolean value) { - + super(affected, controller, value); } + } diff --git a/Essentials/src/net/ess3/api/events/NickChangeEvent.java b/Essentials/src/net/ess3/api/events/NickChangeEvent.java new file mode 100644 index 000000000..61222ca04 --- /dev/null +++ b/Essentials/src/net/ess3/api/events/NickChangeEvent.java @@ -0,0 +1,25 @@ +package net.ess3.api.events; + +import net.ess3.api.IUser; +import org.bukkit.event.Cancellable; + +public class NickChangeEvent extends StateChangeEvent implements Cancellable +{ + private String newValue; + + public NickChangeEvent(IUser affected, IUser controller, String value) { + super(affected, controller); + this.newValue = value; + } + + public NickChangeEvent(boolean isAsync, IUser affected, IUser controller, String value) { + super(isAsync, affected, controller); + this.newValue = value; + } + + public String getValue() + { + return newValue; + } + +} diff --git a/Essentials/src/net/ess3/api/events/StateChangeEvent.java b/Essentials/src/net/ess3/api/events/StateChangeEvent.java new file mode 100644 index 000000000..db7576d31 --- /dev/null +++ b/Essentials/src/net/ess3/api/events/StateChangeEvent.java @@ -0,0 +1,65 @@ +package net.ess3.api.events; + +import net.ess3.api.IUser; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + + +/** + * This handles common boilerplate for other StatusChangeEvents + * + */ +public class StateChangeEvent extends Event implements Cancellable +{ + private static final HandlerList handlers = new HandlerList(); + private boolean cancelled = false; + IUser affected; + IUser controller; + + public StateChangeEvent(IUser affected, IUser controller) { + super(); + this.affected = affected; + this.controller = controller; + } + + public StateChangeEvent(boolean isAsync, IUser affected, IUser controller) { + super(isAsync); + this.affected = affected; + this.controller = controller; + } + + public IUser getAffected() + { + return this.affected; + } + + public IUser getController() + { + return controller; + } + + @Override + public HandlerList getHandlers() + { + return handlers; + } + + public static HandlerList getHandlerList() + { + return handlers; + } + + @Override + public boolean isCancelled() + { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) + { + this.cancelled = cancelled; + } + +} diff --git a/Essentials/src/net/ess3/api/events/StatusChangeEvent.java b/Essentials/src/net/ess3/api/events/StatusChangeEvent.java index f83277470..8fc1316c4 100644 --- a/Essentials/src/net/ess3/api/events/StatusChangeEvent.java +++ b/Essentials/src/net/ess3/api/events/StatusChangeEvent.java @@ -1,53 +1,29 @@ package net.ess3.api.events; -import com.earth2me.essentials.User; +import net.ess3.api.IUser; import org.bukkit.event.Cancellable; -import org.bukkit.event.Event; -import org.bukkit.event.HandlerList; - /** * This handles common boilerplate for other StatusChangeEvents * */ -public class StatusChangeEvent extends Event implements Cancellable +public class StatusChangeEvent extends StateChangeEvent implements Cancellable { - private static final HandlerList handlers = new HandlerList(); - private boolean cancelled; - User affected; - User controller; - - public User getAffected() + private boolean newValue; + + public StatusChangeEvent(IUser affected, IUser controller, boolean value) { + super(affected, controller); + this.newValue = value; + } + + public StatusChangeEvent(boolean isAsync, IUser affected, IUser controller, boolean value) { + super(isAsync, affected, controller); + this.newValue = value; + } + + public boolean getValue() { - return this.affected; + return newValue; } - - public User getController() - { - return controller; - } - - @Override - public HandlerList getHandlers() - { - return handlers; - } - - public static HandlerList getHandlerList() - { - return handlers; - } - - @Override - public boolean isCancelled() - { - return cancelled; - } - - @Override - public void setCancelled(boolean cancelled) - { - this.cancelled = cancelled; - } - + }