src/main/java/org/intellimate/izou/sdk/frameworks/permanentSoundOutput/output/SimplePermanentSoundOutputPlugin.java
@Override
    public EventModel blockingQueueHandling() throws InterruptedException {
        EventModel eventModel = super.blockingQueueHandling();
        if (eventModel.containsDescriptor(MuteEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                mute();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> mute());
            }
        }
        if (eventModel.containsDescriptor(UnMuteEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                unMute();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> unMute());
            }
        }
        if (eventModel.containsDescriptor(StopEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                stopSound();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> stopSound());
            }
        }
        return eventModel;
    }
@Override
    public EventModel blockingQueueHandling() throws InterruptedException {
        EventModel eventModel = super.blockingQueueHandling();
        if (eventModel.containsDescriptor(MuteEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                mute();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> mute());
            }
        }
        if (eventModel.containsDescriptor(UnMuteEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                unMute();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> unMute());
            }
        }
        if (eventModel.containsDescriptor(StopEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                stopSound();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> stopSound());
            }
        }
        return eventModel;
    }
Default implementation waits until a new Event has been received and then processes it.
<p>
This method is made to be overwritten as seen fit by the developer

@return the recently added Event-instance to be processed by the outputPlugin
@throws InterruptedException if interrupted while waiting