Walkyst / lavaplayer-fork

Apache License 2.0
173 stars 68 forks source link

Event triggered multiple times #87

Closed Andorvini closed 1 year ago

Andorvini commented 1 year ago

Hello, I have encountered this problem: When i am launching my program and playing first track using Lavaplayer it plays normally and finishes normally too, here is logs:

[MSG] Track: TEST VIDEO loaded
[MSG] Track ended with reason FINISHED 

But when i am trying to play second track the onTrackEnd event is being triggered two times, logs:

[MSG] Track: TEST VIDEO loaded
[MSG] Track ended with reason FINISHED
[MSG] Track ended with reason FINISHED

And accordingly if I start the third track the event will be triggered three times, and so on

Here is my player code:

playerManager.loadItem(trackUrl, new AudioLoadResultHandler() {
            @Override
            public void trackLoaded(AudioTrack track) {
                String trackTitle = track.getInfo().title;

                System.out.println("[MSG] Track: " + trackTitle +  " loaded");

                player.addListener(new AudioEventAdapter() {
                    @Override
                    public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) {
                        System.out.println("[MSG] Track ended with reason " + endReason);
                    }
                });
                player.playTrack(track);
            }

            @Override
            public void playlistLoaded(AudioPlaylist playlist) {

            }

            @Override
            public void noMatches() {

            }

            @Override
            public void loadFailed(FriendlyException exception) {
                System.out.println("[MSG] Failed to load track: ");
                exception.printStackTrace();
            }
        });
Walkyst commented 1 year ago

Isn't that because you registering AudioEventAdapter everytime when track loaded?

player.addListener(new AudioEventAdapter() {
  @Override
  public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) {
    System.out.println("[MSG] Track ended with reason " + endReason);
  }
});

Why not register it once when your bot is starting up

Andorvini commented 1 year ago

Thank you very much! It worked!!