Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@
* <p>
* For other cases where the player's vanish status changes, you should listen on PlayerJoinEvent and
* check with {@link IUser#isVanished()}.
*
* <b>WARNING: The values of {@link #getAffected()} and {@link #getController()} are inverted due to
* a long-standing parameter swap. {@link #getAffected()} returns the command sender (null for console),
* and {@link #getController()} returns the player whose vanish status changed.</b>
*
* @see <a href="https://github.com/EssentialsX/Essentials/issues/2604">#2604</a>
*/
public class VanishStatusChangeEvent extends StatusChangeEvent {
private static final HandlerList handlers = new HandlerList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,14 +126,16 @@ public boolean isSilentJoinQuit(final IUser user, final String type) {

@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onVanishStatusChange(VanishStatusChangeEvent event) {
if (!jda.getSettings().isVanishFakeJoinLeave() || event.getAffected().isLeavingHidden()) {
// Note: getController() returns the vanished player due to a long-standing parameter swap in Commandvanish.
final IUser vanished = event.getController();
if (vanished == null || !jda.getSettings().isVanishFakeJoinLeave() || vanished.isLeavingHidden()) {
return;
}
if (event.getValue()) {
sendJoinQuitMessage(event.getAffected().getBase(), ChatColor.YELLOW + event.getAffected().getName() + " left the game", MessageType.DefaultTypes.LEAVE);
sendJoinQuitMessage(vanished.getBase(), ChatColor.YELLOW + vanished.getName() + " left the game", MessageType.DefaultTypes.LEAVE);
return;
}
sendJoinQuitMessage(event.getAffected().getBase(), ChatColor.YELLOW + event.getAffected().getName() + " joined the game", MessageType.DefaultTypes.JOIN);
sendJoinQuitMessage(vanished.getBase(), ChatColor.YELLOW + vanished.getName() + " joined the game", MessageType.DefaultTypes.JOIN);
}

public void sendJoinQuitMessage(final Player player, final String message, MessageType type) {
Expand Down
Loading