mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-15 18:34:56 -04:00
assets manager: provide packFormat
This commit is contained in:
parent
6955fae49e
commit
dad2e82285
@ -16,6 +16,7 @@ package de.bixilon.minosoft.assets
|
|||||||
import de.bixilon.kutil.latch.AbstractLatch
|
import de.bixilon.kutil.latch.AbstractLatch
|
||||||
import de.bixilon.minosoft.Minosoft
|
import de.bixilon.minosoft.Minosoft
|
||||||
import de.bixilon.minosoft.assets.minecraft.JarAssetsManager
|
import de.bixilon.minosoft.assets.minecraft.JarAssetsManager
|
||||||
|
import de.bixilon.minosoft.assets.minecraft.MinecraftAssetsVersion.packFormat
|
||||||
import de.bixilon.minosoft.assets.minecraft.index.IndexAssetsManager
|
import de.bixilon.minosoft.assets.minecraft.index.IndexAssetsManager
|
||||||
import de.bixilon.minosoft.assets.multi.PriorityAssetsManager
|
import de.bixilon.minosoft.assets.multi.PriorityAssetsManager
|
||||||
import de.bixilon.minosoft.assets.properties.version.AssetsVersionProperties
|
import de.bixilon.minosoft.assets.properties.version.AssetsVersionProperties
|
||||||
@ -37,7 +38,7 @@ object AssetsLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!profile.assets.disableIndexAssets) {
|
if (!profile.assets.disableIndexAssets) {
|
||||||
assetsManager += IndexAssetsManager(profile, property.indexVersion, property.indexHash, profile.assets.indexAssetsTypes.toSet())
|
assetsManager += IndexAssetsManager(profile, property.indexVersion, property.indexHash, profile.assets.indexAssetsTypes.toSet(), version.packFormat)
|
||||||
}
|
}
|
||||||
if (!profile.assets.disableJarAssets) {
|
if (!profile.assets.disableJarAssets) {
|
||||||
assetsManager += JarAssetsManager(property.jarAssetsHash, property.clientJarHash, profile, version, property.jarAssetsTarBytes ?: JarAssetsManager.DEFAULT_TAR_BYTES)
|
assetsManager += JarAssetsManager(property.jarAssetsHash, property.clientJarHash, profile, version, property.jarAssetsTarBytes ?: JarAssetsManager.DEFAULT_TAR_BYTES)
|
||||||
|
@ -18,6 +18,9 @@ import de.bixilon.kutil.latch.AbstractLatch
|
|||||||
import de.bixilon.kutil.string.StringUtil.formatPlaceholder
|
import de.bixilon.kutil.string.StringUtil.formatPlaceholder
|
||||||
import de.bixilon.kutil.url.URLUtil.toURL
|
import de.bixilon.kutil.url.URLUtil.toURL
|
||||||
import de.bixilon.minosoft.assets.InvalidAssetException
|
import de.bixilon.minosoft.assets.InvalidAssetException
|
||||||
|
import de.bixilon.minosoft.assets.minecraft.MinecraftAssetsVersion.packFormat
|
||||||
|
import de.bixilon.minosoft.assets.properties.manager.AssetsManagerProperties
|
||||||
|
import de.bixilon.minosoft.assets.properties.manager.pack.PackProperties
|
||||||
import de.bixilon.minosoft.assets.util.FileAssetsTypes
|
import de.bixilon.minosoft.assets.util.FileAssetsTypes
|
||||||
import de.bixilon.minosoft.assets.util.FileAssetsUtil
|
import de.bixilon.minosoft.assets.util.FileAssetsUtil
|
||||||
import de.bixilon.minosoft.assets.util.HashTypes
|
import de.bixilon.minosoft.assets.util.HashTypes
|
||||||
@ -58,6 +61,8 @@ class JarAssetsManager(
|
|||||||
override var loaded: Boolean = false
|
override var loaded: Boolean = false
|
||||||
private set
|
private set
|
||||||
private var assets: MutableMap<String, ByteArray> = mutableMapOf()
|
private var assets: MutableMap<String, ByteArray> = mutableMapOf()
|
||||||
|
override val properties = AssetsManagerProperties(PackProperties(format = version.packFormat))
|
||||||
|
|
||||||
|
|
||||||
private fun tryLoadAssets(): Boolean {
|
private fun tryLoadAssets(): Boolean {
|
||||||
val assets = FileAssetsUtil.readOrNull(jarAssetsHash, FileAssetsTypes.GAME, verify = profile.verify)?.let { ByteArrayInputStream(it).readArchive() } ?: return false
|
val assets = FileAssetsUtil.readOrNull(jarAssetsHash, FileAssetsTypes.GAME, verify = profile.verify)?.let { ByteArrayInputStream(it).readArchive() } ?: return false
|
||||||
|
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Minosoft
|
||||||
|
* Copyright (C) 2020-2023 Moritz Zwerger
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.bixilon.minosoft.assets.minecraft
|
||||||
|
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_15W31A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_16W32A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_18W48A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_15_PRE1
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_16_2_RC1
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_19_4_PRE1
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_20_2_PRE2
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_20W45A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_21W39A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_22W11A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_22W42A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_22W45A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_23W14A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_23W17A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_23W31A
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_23W32A
|
||||||
|
import de.bixilon.minosoft.protocol.versions.Version
|
||||||
|
|
||||||
|
object MinecraftAssetsVersion {
|
||||||
|
|
||||||
|
val Version.packFormat: Int
|
||||||
|
get() = when {
|
||||||
|
versionId < V_15W31A -> 1
|
||||||
|
versionId < V_16W32A -> 2
|
||||||
|
versionId < V_18W48A -> 3
|
||||||
|
versionId < V_1_15_PRE1 -> 4
|
||||||
|
versionId < V_1_16_2_RC1 -> 5 // TODO: That should be lower, walls changed earlier
|
||||||
|
versionId < V_20W45A -> 6
|
||||||
|
versionId < V_21W39A -> 7
|
||||||
|
versionId < V_22W11A -> 8
|
||||||
|
versionId < V_22W42A -> 9
|
||||||
|
versionId < V_22W45A -> 11
|
||||||
|
versionId < V_1_19_4_PRE1 -> 12
|
||||||
|
versionId < V_23W14A -> 13
|
||||||
|
versionId < V_23W17A -> 14
|
||||||
|
versionId < V_23W31A -> 15
|
||||||
|
versionId < V_23W32A -> 16
|
||||||
|
versionId < V_1_20_2_PRE2 -> 17
|
||||||
|
else -> 18
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -25,6 +25,8 @@ import de.bixilon.kutil.url.URLUtil.toURL
|
|||||||
import de.bixilon.minosoft.assets.error.AssetCorruptedError
|
import de.bixilon.minosoft.assets.error.AssetCorruptedError
|
||||||
import de.bixilon.minosoft.assets.error.AssetNotFoundError
|
import de.bixilon.minosoft.assets.error.AssetNotFoundError
|
||||||
import de.bixilon.minosoft.assets.minecraft.MinecraftAssetsManager
|
import de.bixilon.minosoft.assets.minecraft.MinecraftAssetsManager
|
||||||
|
import de.bixilon.minosoft.assets.properties.manager.AssetsManagerProperties
|
||||||
|
import de.bixilon.minosoft.assets.properties.manager.pack.PackProperties
|
||||||
import de.bixilon.minosoft.assets.util.FileAssetsTypes
|
import de.bixilon.minosoft.assets.util.FileAssetsTypes
|
||||||
import de.bixilon.minosoft.assets.util.FileAssetsUtil
|
import de.bixilon.minosoft.assets.util.FileAssetsUtil
|
||||||
import de.bixilon.minosoft.assets.util.FileAssetsUtil.toAssetName
|
import de.bixilon.minosoft.assets.util.FileAssetsUtil.toAssetName
|
||||||
@ -49,11 +51,13 @@ class IndexAssetsManager(
|
|||||||
private val assetsVersion: String,
|
private val assetsVersion: String,
|
||||||
private val indexHash: String,
|
private val indexHash: String,
|
||||||
private val types: Set<IndexAssetsType>,
|
private val types: Set<IndexAssetsType>,
|
||||||
|
packFormat: Int,
|
||||||
) : MinecraftAssetsManager {
|
) : MinecraftAssetsManager {
|
||||||
private val verify: Boolean = profile.verify
|
private val verify: Boolean = profile.verify
|
||||||
private val assets: MutableMap<ResourceLocation, AssetsProperty> = synchronizedMapOf()
|
private val assets: MutableMap<ResourceLocation, AssetsProperty> = synchronizedMapOf()
|
||||||
override var loaded: Boolean = false
|
override var loaded: Boolean = false
|
||||||
private set
|
private set
|
||||||
|
override val properties = AssetsManagerProperties(PackProperties(format = packFormat))
|
||||||
|
|
||||||
private fun readAssetsIndex(): Map<String, Any> {
|
private fun readAssetsIndex(): Map<String, Any> {
|
||||||
return FileAssetsUtil.readOrNull(indexHash, FileAssetsTypes.GAME, verify = verify)?.let { ByteArrayInputStream(it).readJsonObject() } ?: downloadAssetsIndex()
|
return FileAssetsUtil.readOrNull(indexHash, FileAssetsTypes.GAME, verify = verify)?.let { ByteArrayInputStream(it).readJsonObject() } ?: downloadAssetsIndex()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Minosoft
|
* Minosoft
|
||||||
* Copyright (C) 2021 Moritz Zwerger
|
* Copyright (C) 2020-2023 Moritz Zwerger
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||||
*
|
*
|
||||||
@ -18,5 +18,5 @@ import de.bixilon.minosoft.data.text.ChatComponent
|
|||||||
|
|
||||||
data class PackProperties(
|
data class PackProperties(
|
||||||
@JsonProperty("pack_format") val format: Int,
|
@JsonProperty("pack_format") val format: Int,
|
||||||
val description: ChatComponent,
|
val description: ChatComponent = ChatComponent.EMPTY,
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user