package com.pixelutilitys.radioplayer;
import com.pixelutilitys.Basemod;
import com.pixelutilitys.gui.GuiRadio;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.SoundCategory;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import javax.swing.*;
public class VLCPlayer implements Runnable {
EmbeddedMediaPlayerComponent mediaPlayerComponent;
String streamURL;
boolean killed = false;
int baseVolume = 150;
public VLCPlayer(final String streamURL, Integer... newBaseVolume) {
this.streamURL = streamURL;
if (!Basemod.vlcLoaded)
return;
if (newBaseVolume.length > 0) {
this.baseVolume = newBaseVolume[0];
setVolume(50);
} else {
this.run();
}
}
public void start() {
this.run();
}
public void setVolume(float v2) {
if (!Basemod.vlcLoaded)
return;
float musicLevel = Minecraft.getMinecraft().gameSettings.getSoundLevel(SoundCategory.MUSIC);
float volume = (v2 * musicLevel) * baseVolume;
if (isPlaying())
mediaPlayerComponent.getMediaPlayer().setVolume((int) volume);
System.out.println(volume);
}
public boolean isPlaying() {
return Basemod.vlcLoaded && !killed && mediaPlayerComponent != null && mediaPlayerComponent.getMediaPlayer().isPlaying();
}
public void stop() {
if (!Basemod.vlcLoaded)
return;
if (mediaPlayerComponent != null)
mediaPlayerComponent.release();
killed = true;
}
@Override
public void run() {
if (!Basemod.vlcLoaded)
return;
JFrame frame = new JFrame("vlcj Tutorial");
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
frame.setContentPane(mediaPlayerComponent);
frame.setLocation(10000, 10000);
frame.setSize(0, 0);
frame.setVisible(true);
mediaPlayerComponent.getMediaPlayer().setPlaySubItems(true);//needed for some streams (youtube)
if (GuiRadio.radio == null || GuiRadio.radio.isLooping()) {
mediaPlayerComponent.getMediaPlayer().setRepeat(true);//enable loop ;D
} else {
mediaPlayerComponent.getMediaPlayer().setRepeat(false);
}
mediaPlayerComponent.getMediaPlayer().playMedia(this.streamURL);
frame.setVisible(false);
}
}