Skip to content

Commit

Permalink
feat: add methods to remove and clear ServerActivation listeners
Browse files Browse the repository at this point in the history
  • Loading branch information
Apehum committed May 18, 2024
1 parent a0ffb3a commit f817c23
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ default boolean checkPermissions(@NotNull VoicePlayer player) {
void setProximity(boolean proximity);

/**
* Invoked when a player uses the activation and meets all requirements:
* Adds a new listener that will be invoked when a player uses the activation and meets all requirements:
* <ul>
* <li>{@link #checkPermissions(VoicePlayer)}</li>
* <li>{@link #checkDistance(int)}</li>
Expand All @@ -131,7 +131,21 @@ default boolean checkPermissions(@NotNull VoicePlayer player) {
void onPlayerActivation(@NotNull PlayerActivationListener activationListener);

/**
* Invoked when a player starts using the activation and meets all requirements:
* Removes a player activation listener.
*
* @param activationListener The listener.
*
* @return {@code true} if the listener was removed.
*/
boolean removePlayerActivationListener(@NotNull PlayerActivationListener activationListener);

/**
* Clears all player activation listeners.
*/
void clearPlayerActivationListeners();

/**
* Adds a new listener that will be invoked when a player starts using the activation and meets all requirements:
* <ul>
* <li>{@link #checkPermissions(VoicePlayer)}</li>
* <li>{@link #checkDistance(int)}</li>
Expand All @@ -143,7 +157,21 @@ default boolean checkPermissions(@NotNull VoicePlayer player) {
void onPlayerActivationStart(@NotNull ServerActivation.PlayerActivationStartListener activationStartListener);

/**
* Invoked when a player sends {@link PlayerAudioEndPacket} and meets all requirements:
* Removes a player activation start listener.
*
* @param activationListener The listener.
*
* @return {@code true} if the listener was removed.
*/
boolean removePlayerActivationStartListener(@NotNull ServerActivation.PlayerActivationStartListener activationListener);

/**
* Clears all player activation start listeners.
*/
void clearPlayerActivationStartListeners();

/**
* Adds a new listener that will be invoked when a player sends {@link PlayerAudioEndPacket} and meets all requirements:
* <ul>
* <li>{@link #checkPermissions(VoicePlayer)}</li>
* <li>{@link #checkDistance(int)}</li>
Expand All @@ -155,6 +183,29 @@ default boolean checkPermissions(@NotNull VoicePlayer player) {
*/
void onPlayerActivationEnd(@NotNull ServerActivation.PlayerActivationEndListener activationEndListener);

/**
* Removes a player activation end listener.
*
* @param activationListener The listener.
*
* @return {@code true} if the listener was removed.
*/
boolean removePlayerActivationEndListener(@NotNull ServerActivation.PlayerActivationEndListener activationListener);

/**
* Clears all player activation end listeners.
*/
void clearPlayerActivationEndListeners();

/**
* Clears all activation listeners.
*/
default void clearListeners() {
clearPlayerActivationListeners();
clearPlayerActivationStartListeners();
clearPlayerActivationEndListeners();
}

@FunctionalInterface
interface PlayerActivationListener {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,14 +98,35 @@ class VoiceServerActivation(
activationListeners.add(activationListener)
}

override fun removePlayerActivationListener(activationListener: ServerActivation.PlayerActivationListener): Boolean =
activationListeners.remove(activationListener)

override fun clearPlayerActivationListeners() {
activationListeners.clear()
}

override fun onPlayerActivationStart(activationStartListener: ServerActivation.PlayerActivationStartListener) {
activationStartListeners.add(activationStartListener)
}

override fun removePlayerActivationStartListener(activationListener: ServerActivation.PlayerActivationStartListener): Boolean =
activationStartListeners.remove(activationListener)

override fun clearPlayerActivationStartListeners() {
activationStartListeners.clear()
}

override fun onPlayerActivationEnd(activationEndListener: ServerActivation.PlayerActivationEndListener) {
activationEndListeners.add(activationEndListener)
}

override fun removePlayerActivationEndListener(activationListener: ServerActivation.PlayerActivationEndListener): Boolean =
activationEndListeners.remove(activationListener)

override fun clearPlayerActivationEndListeners() {
activationEndListeners.clear()
}

override fun equals(other: Any?): Boolean {
return other === this || super.equals(other)
}
Expand Down

0 comments on commit f817c23

Please sign in to comment.