Skip to content

Commit 2d8e822

Browse files
committed
fix: make AtlasGenerator ensure sources are distinct
1 parent 115db76 commit 2d8e822

1 file changed

Lines changed: 8 additions & 10 deletions

File tree

src/main/kotlin/com/mineinabyss/packy/helpers/AtlasGenerator.kt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,16 @@ import team.unnamed.creative.model.ModelTexture
1212

1313
object AtlasGenerator {
1414
fun generateAtlasFile(resourcePack: ResourcePack) {
15-
val sources = ObjectArrayList<AtlasSource>()
16-
resourcePack.models().forEach { model ->
17-
addKey(model.textures().layers().mapNotNullFast(ModelTexture::key), sources)
18-
addKey(model.textures().variables().values.mapNotNullFast(ModelTexture::key), sources)
15+
val textures = resourcePack.models().flatMap { model ->
16+
model.textures().layers().plus(model.textures().variables().values).plus(model.textures().particle())
17+
}.filterNotNull().mapNotNull(ModelTexture::key)
1918

20-
model.textures().particle()?.key()?.let { addKey(listOf(it), sources) }
21-
}
22-
sources.sortBy { (it as? SingleAtlasSource)?.resource() }
19+
val sources = textures.distinctBy { it.asString() }.mapNotNull { key ->
20+
if (ResourcePacks.vanillaResourcePack.texture(key) != null) return@mapNotNull null
21+
else AtlasSource.single(key)
22+
}.sortedBy { it.resource() }.distinct()
2323

24-
val atlas = resourcePack.atlas(Atlas.BLOCKS)?.let {
25-
it.toBuilder().sources(it.sources().plus(sources)).build()
26-
} ?: Atlas.atlas(Atlas.BLOCKS, sources)
24+
val atlas = resourcePack.atlas(Atlas.BLOCKS)?.toBuilder()?.apply { sources.forEach(::addSource) }?.build() ?: Atlas.atlas(Atlas.BLOCKS, sources.distinct())
2725

2826
atlas.addTo(resourcePack)
2927
}

0 commit comments

Comments
 (0)