Skip to content

Commit fb926fc

Browse files
committed
refactor: bump packy, stop converting ItemOverride to modern format
1 parent bcfc805 commit fb926fc

6 files changed

Lines changed: 36 additions & 533 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
group=com.mineinabyss
22
version=0.8
3-
idofrontVersion=1.0.0
3+
idofrontVersion=1.0.3

src/main/kotlin/com/mineinabyss/packy/PackObfuscator.kt

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.mineinabyss.packy
22

33
import com.mineinabyss.idofront.resourcepacks.ResourcePacks
4+
import com.mineinabyss.idofront.util.associateFast
5+
import com.mineinabyss.idofront.util.associateFastNotNull
6+
import com.mineinabyss.idofront.util.associateFastWith
47
import com.mineinabyss.idofront.util.filterFast
58
import com.mineinabyss.idofront.util.mapNotNullFast
69
import com.mineinabyss.idofront.util.toFastMap
@@ -16,8 +19,14 @@ import team.unnamed.creative.blockstate.MultiVariant
1619
import team.unnamed.creative.blockstate.Selector
1720
import team.unnamed.creative.blockstate.Variant
1821
import team.unnamed.creative.font.BitMapFontProvider
19-
import team.unnamed.creative.item.*
20-
import team.unnamed.creative.model.ItemOverride
22+
import team.unnamed.creative.item.CompositeItemModel
23+
import team.unnamed.creative.item.ConditionItemModel
24+
import team.unnamed.creative.item.Item
25+
import team.unnamed.creative.item.ItemModel
26+
import team.unnamed.creative.item.RangeDispatchItemModel
27+
import team.unnamed.creative.item.ReferenceItemModel
28+
import team.unnamed.creative.item.SelectItemModel
29+
import team.unnamed.creative.item.SpecialItemModel
2130
import team.unnamed.creative.model.Model
2231
import team.unnamed.creative.model.ModelTexture
2332
import team.unnamed.creative.model.ModelTextures
@@ -222,7 +231,6 @@ class PackObfuscator(private val resourcePack: ResourceContainer) {
222231
val builder = model.toBuilder()
223232

224233
obfuscateModelTextures(model, builder)
225-
obfuscateOverrides(model, builder)
226234
(model.key().takeUnless { model.key() in skippedKeys || ResourcePacks.vanillaResourcePack.model(it) != null }?.obfuscateKey())?.apply(builder::key)
227235

228236
val obfuscatedModel = ObfuscatedModel(model, builder.build()).apply(obfuscatedModels::add)
@@ -252,7 +260,7 @@ class PackObfuscator(private val resourcePack: ResourceContainer) {
252260

253261
private fun Variant.obfuscateVariant(): Variant {
254262
return Variant.builder()
255-
.model(obfuscatedModels.findObf(model())?.key() ?: model())
263+
.model(obfuscatedModels.findObf(model()).key())
256264
.uvLock(uvLock()).weight(weight()).x(x()).y(y()).build()
257265
}
258266

@@ -268,20 +276,6 @@ class PackObfuscator(private val resourcePack: ResourceContainer) {
268276
builder.parent(obfuscatedParent)
269277
}
270278

271-
private fun obfuscateOverrides(model: Model, builder: Model.Builder) {
272-
val obfuscatedOverrides = obfuscatedModels.findObfOrNull(model.key())?.overrides() ?: model.overrides().map { override ->
273-
val overrideKey = override.model()
274-
val modelKey = obfuscatedModels.findObfOrNull(overrideKey)?.key()
275-
?: ResourcePacks.vanillaResourcePack.model(overrideKey)?.let { overrideKey }
276-
?: resourcePack.takeUnless { overrideKey == model.key() }?.model(overrideKey)?.let(::obfuscateModel)?.key()
277-
?: return@map override
278-
279-
ItemOverride.of(modelKey, override.predicate())
280-
}
281-
282-
builder.overrides(obfuscatedOverrides)
283-
}
284-
285279

286280
private fun Key.removeSuffix(suffix: String) = Key.key(asString().removeSuffix(suffix))
287281
private fun Key.appendSuffix(suffix: String) = Key.key(asString().removeSuffix(suffix).plus(suffix))
@@ -316,18 +310,17 @@ class PackObfuscator(private val resourcePack: ResourceContainer) {
316310
.plus(ResourcePacks.vanillaResourcePack.models())
317311
.distinctBy { it.key().asString() }
318312
.mapNotNull { it.textures().layers() + listOfNotNull(it.textures().particle()) + it.textures().variables().values }.flatten()
319-
.mapNotNullFast {
320-
val key = it.key()?.appendSuffix(".png") ?: return@mapNotNullFast null
321-
key to (resourcePack.texture(key) ?: ResourcePacks.vanillaResourcePack.texture(key) ?: return@mapNotNullFast null)
322-
}.toFastMap()
313+
.associateFastNotNull {
314+
val key = it.key()?.appendSuffix(".png") ?: return@associateFastNotNull null
315+
key to (resourcePack.texture(key) ?: ResourcePacks.vanillaResourcePack.texture(key) ?: return@associateFastNotNull null)
316+
}
323317
}
324318

325319
private val vanillaFontTextures by lazy {
326320
resourcePack.fonts().filterFast { ResourcePacks.vanillaResourcePack.font(it.key()) != null }
327321
.plus(ResourcePacks.vanillaResourcePack.fonts())
328322
.distinctBy { it.key().asString() }
329323
.mapNotNull { it.providers().mapNotNullFast { (it as? BitMapFontProvider)?.file()?.appendSuffix(".png") } }.flatten()
330-
.mapNotNullFast { it to (resourcePack.texture(it) ?: ResourcePacks.vanillaResourcePack.texture(it) ?: return@mapNotNullFast null) }
331-
.toFastMap()
324+
.associateFastWith { resourcePack.texture(it) ?: ResourcePacks.vanillaResourcePack.texture(it) ?: return@associateFastWith null }
332325
}
333326
}

src/main/kotlin/com/mineinabyss/packy/PackyGenerator.kt

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,24 @@ package com.mineinabyss.packy
22

33
import com.github.shynixn.mccoroutine.bukkit.asyncDispatcher
44
import com.github.shynixn.mccoroutine.bukkit.launch
5-
import com.google.gson.JsonParser
65
import com.mineinabyss.idofront.resourcepacks.ResourcePacks
76
import com.mineinabyss.idofront.textcomponents.miniMsg
8-
import com.mineinabyss.idofront.util.filterFast
97
import com.mineinabyss.packy.components.PackyPack
108
import com.mineinabyss.packy.config.PackyTemplate
119
import com.mineinabyss.packy.config.packy
1210
import com.mineinabyss.packy.helpers.AtlasGenerator
1311
import com.mineinabyss.packy.helpers.CacheMap
14-
import com.mineinabyss.packy.helpers.ModernVersionPatcher
1512
import com.mineinabyss.packy.helpers.TemplateIds
16-
import kotlinx.coroutines.*
13+
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap
14+
import kotlinx.coroutines.Deferred
15+
import kotlinx.coroutines.Dispatchers
16+
import kotlinx.coroutines.Job
17+
import kotlinx.coroutines.async
18+
import kotlinx.coroutines.coroutineScope
19+
import kotlinx.coroutines.launch
20+
import kotlinx.coroutines.withContext
1721
import team.unnamed.creative.ResourcePack
1822
import team.unnamed.creative.base.Writable
19-
import kotlin.collections.containsValue
2023
import kotlin.io.path.div
2124
import kotlin.io.path.exists
2225

@@ -32,7 +35,7 @@ object PackyGenerator {
3235
requiredTemplateJob = packy.plugin.launch(packy.plugin.asyncDispatcher) {
3336
// Add all forced packs to defaultPack
3437
packy.templates.filter(PackyTemplate::required).mapNotNull { ResourcePacks.readToResourcePack(it.path.toFile()) }.forEach {
35-
ResourcePacks.mergeResourcePacks(packy.defaultPack, it)
38+
ResourcePacks.mergePack(packy.defaultPack, it)
3639
}
3740

3841
packy.logger.s("Finished configuring defaultPack")
@@ -54,26 +57,24 @@ object PackyGenerator {
5457
activeGeneratorJob.getOrPut(templateIds) {
5558
async(Dispatchers.IO) {
5659
val cachedPack = ResourcePack.resourcePack()
57-
ResourcePacks.mergeResourcePacks(cachedPack, packy.defaultPack)
60+
61+
ResourcePacks.mergePack(cachedPack, packy.defaultPack)
5862

5963
// Filters out all required files as they are already in defaultPack
6064
// Filter all TemplatePacks that are not default or not in players enabledPackAddons
6165
packy.templates.filter { !it.required && it.id in templateIds }
6266
.mapNotNull { ResourcePacks.readToResourcePack(it.path.toFile()) }
63-
.forEach { ResourcePacks.mergeResourcePacks(cachedPack, it) }
67+
.forEach { ResourcePacks.mergePack(cachedPack, it) }
6468

6569
AtlasGenerator.generateAtlasFile(cachedPack)
6670

67-
ModernVersionPatcher.convertResources(cachedPack)
68-
cachedPack.items().removeIf { ModernVersionPatcher.standardItemModels.containsValue(it) }
69-
PackObfuscator(cachedPack).obfuscatePack()
71+
cachedPack.items().removeIf(standardItemModels::containsValue)
7072

7173
(packy.plugin.dataFolder.toPath() / packy.config.icon).takeIf { it.exists() }
7274
?.let { packy.defaultPack.icon(Writable.path(it)) }
7375
packy.config.mcmeta.description.takeIf { it.isNotEmpty() }
7476
?.let { packy.defaultPack.packMeta(packy.config.mcmeta.format, it.miniMsg()) }
7577

76-
ResourcePacks.resourcePackWriter.writeToZipFile(packy.plugin.dataFolder.resolve("test2.zip"), cachedPack)
7778
val builtPack = ResourcePacks.resourcePackWriter.build(cachedPack)
7879
PackyPack(builtPack, templateIds).apply {
7980
cachedPacks[templateIds] = this
@@ -88,4 +89,8 @@ object PackyGenerator {
8889
}
8990
}
9091
}
92+
93+
val standardItemModels by lazy {
94+
ResourcePacks.vanillaResourcePack.items().associateByTo(Object2ObjectOpenHashMap()) { it.key() }.minus(ResourcePacks.EMPTY_MODEL)
95+
}
9196
}

0 commit comments

Comments
 (0)