mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-15 10:25:06 -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.minosoft.Minosoft
|
||||
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.multi.PriorityAssetsManager
|
||||
import de.bixilon.minosoft.assets.properties.version.AssetsVersionProperties
|
||||
@ -37,7 +38,7 @@ object AssetsLoader {
|
||||
}
|
||||
|
||||
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) {
|
||||
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.url.URLUtil.toURL
|
||||
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.FileAssetsUtil
|
||||
import de.bixilon.minosoft.assets.util.HashTypes
|
||||
@ -58,6 +61,8 @@ class JarAssetsManager(
|
||||
override var loaded: Boolean = false
|
||||
private set
|
||||
private var assets: MutableMap<String, ByteArray> = mutableMapOf()
|
||||
override val properties = AssetsManagerProperties(PackProperties(format = version.packFormat))
|
||||
|
||||
|
||||
private fun tryLoadAssets(): Boolean {
|
||||
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.AssetNotFoundError
|
||||
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.FileAssetsUtil
|
||||
import de.bixilon.minosoft.assets.util.FileAssetsUtil.toAssetName
|
||||
@ -49,11 +51,13 @@ class IndexAssetsManager(
|
||||
private val assetsVersion: String,
|
||||
private val indexHash: String,
|
||||
private val types: Set<IndexAssetsType>,
|
||||
packFormat: Int,
|
||||
) : MinecraftAssetsManager {
|
||||
private val verify: Boolean = profile.verify
|
||||
private val assets: MutableMap<ResourceLocation, AssetsProperty> = synchronizedMapOf()
|
||||
override var loaded: Boolean = false
|
||||
private set
|
||||
override val properties = AssetsManagerProperties(PackProperties(format = packFormat))
|
||||
|
||||
private fun readAssetsIndex(): Map<String, Any> {
|
||||
return FileAssetsUtil.readOrNull(indexHash, FileAssetsTypes.GAME, verify = verify)?.let { ByteArrayInputStream(it).readJsonObject() } ?: downloadAssetsIndex()
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
@ -18,5 +18,5 @@ import de.bixilon.minosoft.data.text.ChatComponent
|
||||
|
||||
data class PackProperties(
|
||||
@JsonProperty("pack_format") val format: Int,
|
||||
val description: ChatComponent,
|
||||
val description: ChatComponent = ChatComponent.EMPTY,
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user