Skip to content

Commit

Permalink
feat(api): ServerSourceCreatedEvent and ServerSourceRemovedEvent
Browse files Browse the repository at this point in the history
  • Loading branch information
Apehum committed Jun 8, 2024
1 parent e88d0e9 commit c52b24b
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
public final class ServerSourceAudioPacketEvent extends EventCancellableBase {

@Getter
private final ServerAudioSource source;
private final ServerAudioSource<?> source;
@Getter
private final SourceAudioPacket packet;
@Getter
Expand All @@ -25,15 +25,15 @@ public final class ServerSourceAudioPacketEvent extends EventCancellableBase {
private @Nullable PlayerActivationInfo activationInfo;

public ServerSourceAudioPacketEvent(
@NotNull ServerAudioSource source,
@NotNull ServerAudioSource<?> source,
@NotNull SourceAudioPacket packet,
@Nullable PlayerActivationInfo activationInfo
) {
this(source, packet, (short) -1, activationInfo);
}

public ServerSourceAudioPacketEvent(
@NotNull ServerAudioSource source,
@NotNull ServerAudioSource<?> source,
@NotNull SourceAudioPacket packet,
short distance,
@Nullable PlayerActivationInfo activationInfo
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package su.plo.voice.api.server.event.audio.source;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import su.plo.voice.api.event.EventCancellableBase;
import su.plo.voice.api.server.audio.source.ServerAudioSource;

/**
* This event is fired once a new source is created.
*/
@RequiredArgsConstructor
public final class ServerSourceCreatedEvent extends EventCancellableBase {

@Getter
private final ServerAudioSource<?> source;
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@
public final class ServerSourcePacketEvent extends EventCancellableBase {

@Getter
private final ServerAudioSource source;
private final ServerAudioSource<?> source;
@Getter
private final Packet<?> packet;
@Getter
@Setter
private short distance;

public ServerSourcePacketEvent(@NotNull ServerAudioSource source,
public ServerSourcePacketEvent(@NotNull ServerAudioSource<?> source,
@NotNull Packet<?> packet) {
this(source, packet, (short) -1);
}

public ServerSourcePacketEvent(@NotNull ServerAudioSource source,
public ServerSourcePacketEvent(@NotNull ServerAudioSource<?> source,
@NotNull Packet<?> packet,
short distance) {
this.source = source;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package su.plo.voice.api.server.event.audio.source;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import su.plo.voice.api.event.EventCancellableBase;
import su.plo.voice.api.server.audio.source.ServerAudioSource;

/**
* This event is fired once a new source is removed.
*/
@RequiredArgsConstructor
public final class ServerSourceRemovedEvent extends EventCancellableBase {

@Getter
private final ServerAudioSource<?> source;
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import su.plo.voice.api.server.audio.line.ServerPlayerSetManager
import su.plo.voice.api.server.audio.source.ServerAudioSource
import su.plo.voice.api.server.audio.source.ServerBroadcastSource
import su.plo.voice.api.server.audio.source.ServerDirectSource
import su.plo.voice.api.server.event.audio.source.ServerSourceCreatedEvent
import su.plo.voice.api.server.event.audio.source.ServerSourceRemovedEvent
import su.plo.voice.api.server.player.VoicePlayer
import su.plo.voice.proto.data.audio.codec.CodecInfo
import su.plo.voice.proto.data.audio.line.VoiceSourceLine
Expand Down Expand Up @@ -59,7 +61,7 @@ abstract class VoiceBaseServerSourceLine(
this,
decoderInfo,
stereo
).also { sourceById[it.id] = it }
).also(::addSource)

override fun createDirectSource(player: VoicePlayer, stereo: Boolean, decoderInfo: CodecInfo?): ServerDirectSource =
VoiceServerDirectSource(
Expand All @@ -70,10 +72,12 @@ abstract class VoiceBaseServerSourceLine(
decoderInfo,
stereo,
player
).also { sourceById[it.id] = it }
).also(::addSource)

override fun removeSource(sourceId: UUID) {
sourceById.remove(sourceId)
val source = sourceById.remove(sourceId) ?: return

voiceServer.eventBus.fire(ServerSourceRemovedEvent(source))
}

override fun getSourceById(sourceId: UUID): Optional<ServerAudioSource<*>> =
Expand All @@ -83,4 +87,9 @@ abstract class VoiceBaseServerSourceLine(
sourceById.values

override fun clear() = sourceById.clear()

protected fun addSource(source: ServerAudioSource<*>) {
sourceById[source.id] = source
voiceServer.eventBus.fire(ServerSourceCreatedEvent(source))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class VoiceServerSourceLine(
decoderInfo,
stereo,
player
).also { sourceById[it.id] = it }
).also(::addSource)

override fun createEntitySource(
entity: McServerEntity,
Expand All @@ -61,7 +61,7 @@ class VoiceServerSourceLine(
decoderInfo,
stereo,
entity
).also { sourceById[it.id] = it }
).also(::addSource)

override fun createStaticSource(
position: ServerPos3d,
Expand All @@ -75,5 +75,5 @@ class VoiceServerSourceLine(
decoderInfo,
stereo,
position
).also { sourceById[it.id] = it }
).also(::addSource)
}

0 comments on commit c52b24b

Please sign in to comment.