I'm actually trying to make a folder in the /mods directory, where you can put any music you want and it creates a music disc ingame for every track. I have used .oggs and Minecrafts own sound system(it works), but it reads only from inside the mod zip(assets folder) and I like mp3s more.
But if there's a way to play .oggs elsewhere than assets folder, I would be greatful for that.
I'm using the libary down below for playing mp3s(works):
http://www.javazoom.net/javalayer/docs/docs1.0/index.html
And here's my code for using the Player class in the library:
package Core.client.sounds;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;
import net.minecraft.client.Minecraft;
import Core.ModBFU.BlocksForUse;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
public class Sounds implements Runnable{
static ArrayList fileNames = new ArrayList();
public static ArrayList getList(){
return fileNames;
}
public static String getNameAt(int index){
return (String)fileNames.get(index);
}
public static void addName(String name){
fileNames.add(name);
}
public static Player player;
public void playRecord(int index, double x, double y, double z){
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT && Minecraft.getMinecraft().gameSettings.soundVolume != 0.0F){
try{
String Path = BlocksForUse.newPath;
File file = new File(Path + Path.charAt(2)/* the '\' character*/ + "Music" + Path.charAt(2) + getNameAt(index));
if (file.exists()){
try {
InputStream stream = (InputStream)new FileInputStream(file);//the mp3 file
javazoom.jl.player.Player player = new Player(stream);
this.player = player;
System.out.println("Made new player with file: " + file.getName());
run();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JavaLayerException e) {
e.printStackTrace();
}
}
}finally{
}
}
}
@Override
public void run() {
try {
player.play();
} catch (JavaLayerException e) {
e.printStackTrace();
}
}
}
Thanks in advance,
Talckrer