-
-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MP3 Playback does not work in exported JAR despite MP3 dependencies being added from XR3Player's pom file #79
Comments
Well you have to export the jar dependencies outside the project jar on a separate folder. Same way i do it with XR3Player. I had this issue too. The jar dependencies can't be in the main jar file of the project for some weird reason. So 1)Project Jar It is possible just Google it a bit. I only know how to do it with Maven. Check my XR3Player repository |
all of them JARs have to be external? |
Yes exactly there will be one main jar which has the application code and also will be a folder that contains all your project dependencies as jars. Just copy paste my text and ask chatgpt ☺. It's easy to do it. |
I tried so many things still doesn't work |
@omegaui i think you came across the same issue 2 years ago, may i ask how did you manage to sort that out? |
@lockieluke |
Thanks take your time 🙏 |
@lockieluke I was able to compile the plugin into self-contained jar with the required libraries. But here's that self-contained jar file, if this could help. |
Do you not have the source code |
Both of them |
Guys check the XR3Player of mine repository i have done it for you with Maven instead of Gradle. It's the same logic. |
Good News, I did it! All of the stream-player related dependencies have to be exported to a folder outside the JAR In this case, I created a new dependency keyword The thing I'm making is a Minecraft mod so when you install the mod you'll have to copy the "dependencies" folder next to the jar file too which is not the most seamless solution but it works, and there we go. Please consider keeping this issue open, it would help so many people. plugins {
id 'fabric-loom' version '1.4-SNAPSHOT'
id 'maven-publish'
id "org.jetbrains.kotlin.jvm" version "1.9.21"
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.21'
id 'com.github.johnrengelman.shadow' version '8.1.1'
}
version = project.mod_version
group = project.maven_group
base {
archivesName = project.archives_base_name
}
configurations {
externalImplementation
}
repositories {
// Add repositories to retrieve artifacts from in here.
// You should only use this when depending on other mods because
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
// for more information about repositories.
mavenCentral()
maven {
name = "jitpack"
url = "https://jitpack.io/"
}
}
loom {
splitEnvironmentSourceSets()
mods {
"coopersmpwinterclient" {
sourceSet sourceSets.main
sourceSet sourceSets.client
}
}
}
dependencies {
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
modImplementation "net.fabricmc:fabric-language-kotlin:${project.fabric_kotlin_version}"
modImplementation "com.ptsmods:devlogin:3.4.1"
// java-stream-player and its dependencies
implementation externalImplementation("com.github.goxr3plus:java-stream-player:10.0.2")
include implementation("com.github.goxr3plus:jaudiotagger:2.2.7")
include implementation("com.mpatric:mp3agic:0.9.1")
include implementation('com.googlecode.soundlibs:mp3spi:1.9.5-1') {
exclude group: 'com.googlecode.soundlibs', module: 'tritonus-share'
}
include implementation('org.jflac:jflac-codec:1.5.2')
include implementation('com.github.trilarion:vorbis-support:1.1.0')
include implementation('com.googlecode.soundlibs:tritonus-all:0.3.7.2') {
exclude group: 'com.googlecode.soundlibs', module: 'tritonus-share'
}
// Uncomment the following line to enable the deprecated Fabric API modules.
// These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time.
// modImplementation "net.fabricmc.fabric-api:fabric-api-deprecated:${project.fabric_version}"
}
processResources {
inputs.property "version", project.version
filesMatching("fabric.mod.json") {
expand "version": project.version
}
}
tasks.withType(JavaCompile).configureEach {
it.options.release = 17
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = 17
}
}
java {
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
remapJar {
addNestedDependencies = true
}
// MAGIC STARTS HERE
def dependsDir = "build/libs/dependencies"
tasks.register("copyDependencies", Copy) {
configurations.externalImplementation.canBeResolved = true
from configurations.externalImplementation
into "$dependsDir"
}
remapJar.dependsOn(tasks.named("copyDependencies"))
jar {
from("LICENSE") {
rename { "${it}_${project.base.archivesName.get()}" }
}
manifest {
attributes("Class-Path": configurations.externalImplementation.collect { "dependencies/${it.getName()}" }.join(' '))
}
}
// configure the maven publication
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
repositories {
// Add repositories to publish to here.
// Notice: This block does NOT have the same function as the block in the top level.
// The repositories here will be used for publishing your artifact, not for
// retrieving dependencies.
}
}
|
I'm trying to use
java-stream-player
in a Minecraft fabric mod, everything works in dev environment but MP3 playback just does not work when the mod is exported to a normal JAR file and then added to a normal Minecraft Fabric instance.It would simply says:
The text was updated successfully, but these errors were encountered: