diff --git a/Common/src/main/kotlin/journeymap_webmap/service/webmap/kotlin/routes/resources.kt b/Common/src/main/kotlin/journeymap_webmap/service/webmap/kotlin/routes/resources.kt index bbb11e6..7955b83 100644 --- a/Common/src/main/kotlin/journeymap_webmap/service/webmap/kotlin/routes/resources.kt +++ b/Common/src/main/kotlin/journeymap_webmap/service/webmap/kotlin/routes/resources.kt @@ -4,6 +4,7 @@ import com.mojang.blaze3d.platform.NativeImage import io.javalin.http.Context import journeymap.client.JourneymapClient import journeymap.client.io.FileHandler.ASSETS_JOURNEYMAP_UI +import journeymap.client.render.draw.MobIconCache import journeymap.client.texture.TextureCache import journeymap.common.Journeymap import journeymap_webmap.common.kotlin.extensions.getResourceAsStream @@ -31,7 +32,7 @@ internal fun resourcesGet(ctx: Context) val img: NativeImage val resource = ctx.queryParam("resource") val resourceLocation = resource?.let { ResourceLocation.parse(it) } - + var close = false var extension = resource?.split('.')?.last() if (Minecraft.getInstance().level == null || !JourneymapClient.getInstance().isMapping) { @@ -45,13 +46,17 @@ internal fun resourcesGet(ctx: Context) } if ("fake" == resourceLocation?.namespace) { - img = TextureCache.getTexture(resourceLocation).nativeImage + img = TextureCache.getTexture(resourceLocation)?.pixels!! } else { img = try { + MobIconCache.getWebMapIcon(resourceLocation)?.pixels!! + } catch (e: NullPointerException) { + close = true NativeImage.read(resourceLocation?.getResourceAsStream()!!) } catch (e: FileNotFoundException) { logger.warn("File at resource location not found: $resource") ctx.status(404) + close = true NativeImage.read(Webmap.javaClass.getResource("$ASSETS_JOURNEYMAP_UI/img/marker-dot-32.png").openStream()) } catch (e: EofException) { logger.info("Connection closed while writing image response. Webmap probably reloaded.") @@ -64,6 +69,7 @@ internal fun resourcesGet(ctx: Context) } catch (e: Exception) { logger.error("Exception thrown while retrieving resource at location: $resource", e) ctx.status(500) + close = true NativeImage.read(Webmap.javaClass.getResource("$ASSETS_JOURNEYMAP_UI/img/marker-dot-32.png").openStream()) } } @@ -71,8 +77,8 @@ internal fun resourcesGet(ctx: Context) ctx.contentType("image/${extension}") img.writeToChannel(Channels.newChannel(ctx.outputStream())) ctx.outputStream().flush() - // dont close fake since that causes problems... - if (resource?.split(":")?.first()?.contains("fake") != true) { + // close images read from disk to prevent memory leaks + if (close) { img.close() } } diff --git a/Common/src/main/kotlin/journeymap_webmap/service/webmap/kotlin/routes/waypoint.kt b/Common/src/main/kotlin/journeymap_webmap/service/webmap/kotlin/routes/waypoint.kt index da652f2..32e72de 100644 --- a/Common/src/main/kotlin/journeymap_webmap/service/webmap/kotlin/routes/waypoint.kt +++ b/Common/src/main/kotlin/journeymap_webmap/service/webmap/kotlin/routes/waypoint.kt @@ -10,7 +10,7 @@ import java.nio.channels.Channels internal fun iconGet(ctx: Context) { val id = ctx.pathParam("id") - val img: NativeImage? = TextureCache.getColorizedWaypointIcon(id)?.nativeImage + val img: NativeImage? = TextureCache.getColorizedWaypointIcon(id)?.pixels!! ctx.contentType(ContentType.IMAGE_PNG) img?.writeToChannel(Channels.newChannel(ctx.outputStream())) diff --git a/Fabric/build.gradle b/Fabric/build.gradle index 48d09a8..3a12943 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -245,7 +245,7 @@ task publishCurseForge(type: net.darkhax.curseforgegradle.TaskPublishCurseForge) mainFile.releaseType = release_type mainFile.addModLoader("Fabric", "Quilt") mainFile.addJavaVersion("Java 21") - mainFile.addGameVersion("${project.minecraft_version}") + mainFile.addGameVersion("${project.minecraft_version}", "1.21.1") mainFile.addRelation("journeymap", "requiredDependency") mainFile.changelogType = "html" mainFile.changelog = file("$project.buildDir/doc/changelog.html") @@ -260,7 +260,7 @@ modrinth { versionName = "${project.mod_id}-${version}+${loaderName}" versionType = release_type uploadFile = remapJar - gameVersions = ["${project.minecraft_version}"] + gameVersions = ["${project.minecraft_version}", "1.21.1"] loaders = ["fabric", "quilt"] changelog = file("/build/doc/changelog.html").exists() ? file("/build/doc/changelog.html").text : null dependencies { diff --git a/Forge/build.gradle b/Forge/build.gradle index e6d80d4..582d78a 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -291,7 +291,7 @@ task publishCurseForge(type: net.darkhax.curseforgegradle.TaskPublishCurseForge) mainFile.releaseType = release_type mainFile.addModLoader("Forge") mainFile.addJavaVersion("Java 21") - mainFile.addGameVersion("${project.minecraft_version}") + mainFile.addGameVersion("${project.minecraft_version}", "1.21.1") mainFile.addRelation("journeymap", "requiredDependency") mainFile.changelogType = "html" mainFile.changelog = file("$project.buildDir/doc/changelog.html") @@ -306,7 +306,7 @@ modrinth { versionName = "${project.mod_id}-${version}+${loaderName}" versionType = release_type uploadFile = shadowJar - gameVersions = ["${project.minecraft_version}"] + gameVersions = ["${project.minecraft_version}", "1.21.1"] loaders = ["forge"] changelog = file('/build/doc/changelog.html').exists() ? file('/build/doc/changelog.html').text : null dependencies { diff --git a/NeoForge/build.gradle b/NeoForge/build.gradle index cbcf4d5..bedb4d1 100644 --- a/NeoForge/build.gradle +++ b/NeoForge/build.gradle @@ -17,7 +17,7 @@ buildscript { plugins { id "java-library" id "idea" - id "net.neoforged.gradle.userdev" version "[7.0.142,)" + id "net.neoforged.gradle.userdev" version '[7.0.145]' id 'net.darkhax.curseforgegradle' version '1.+' } @@ -224,7 +224,7 @@ task publishCurseForge(type: net.darkhax.curseforgegradle.TaskPublishCurseForge) mainFile.releaseType = release_type mainFile.addModLoader("NeoForge") mainFile.addJavaVersion("Java 21") - mainFile.addGameVersion("${project.minecraft_version}") + mainFile.addGameVersion("${project.minecraft_version}", "1.21.1") mainFile.addRelation("journeymap", "requiredDependency") mainFile.changelogType = "html" mainFile.changelog = file("$project.buildDir/doc/changelog.html") @@ -240,7 +240,7 @@ modrinth { versionName ="${project.mod_id}-${version}+${loaderName}" versionType = release_type uploadFile = shadowJar - gameVersions = ["${project.minecraft_version}"] + gameVersions = ["${project.minecraft_version}", "1.21.1"] loaders = ["neoforge"] changelog = file('/build/doc/changelog.html').exists() ? file('/build/doc/changelog.html').text : null dependencies { diff --git a/build.gradle b/build.gradle index 9a4f16f..7fc69c7 100644 --- a/build.gradle +++ b/build.gradle @@ -78,7 +78,8 @@ subprojects { dependencies { implementation group: 'info.journeymap', name: 'webmap-client', version: project.journeymap_webmap_version, changing: true - compileOnly "curse.maven:journeymap-32274:${project.journeymap_forge_version}" +// compileOnly "curse.maven:journeymap-32274:${project.journeymap_forge_version}" + implementation "ignored:journeymap-forge:1.21.1-6.0.0-beta.27" // for annotations implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.1' @@ -86,7 +87,8 @@ subprojects { implementation group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1' implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: '1.9.20' implementation group: 'io.javalin', name: 'javalin', version: '6.1.6' - testImplementation "curse.maven:journeymap-32274:${project.journeymap_forge_version}" +// testImplementation "curse.maven:journeymap-32274:${project.journeymap_forge_version}" + testImplementation "ignored:journeymap-forge:1.21.1-6.0.0-beta.27" } diff --git a/doc/changelog.html b/doc/changelog.html index c69c631..8ceaa84 100644 --- a/doc/changelog.html +++ b/doc/changelog.html @@ -23,7 +23,5 @@

JourneyMap WebMap ${version} for Minecraft ${mcversion}

New in ${version}

diff --git a/gradle.properties b/gradle.properties index ea70a0d..3fab0c2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,7 +20,7 @@ journeymap_forge_version=5440965 neoforge_version=21.0.0-beta # Fabric -fabric_api_version=0.100.1+1.21 +fabric_api_version=0.102.0+1.21 fabric_loader_version=0.15.11 journeymap_fabric_version=4240509