diff --git a/build.gradle.kts b/build.gradle.kts index 70067db..4c6e790 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ plugins { } group = "io.github.dayyeeet.solid" -version = "1.0.0" +version = "1.0.1" repositories { mavenCentral() diff --git a/src/main/kotlin/io/github/dayyeeet/solid/builder/AdvancedResourcePack.kt b/src/main/kotlin/io/github/dayyeeet/solid/builder/AdvancedResourcePack.kt index be660f5..d122427 100644 --- a/src/main/kotlin/io/github/dayyeeet/solid/builder/AdvancedResourcePack.kt +++ b/src/main/kotlin/io/github/dayyeeet/solid/builder/AdvancedResourcePack.kt @@ -33,7 +33,7 @@ class AdvancedResourcePack( } fun variantModel(target: Key, texture: Key): Key { - return apply(ModelVariantConfig(target, texture, null)) + return apply(ModelVariantConfig(target, texture, ModelVariantConfig.Textures.simple(texture), mapOf())) } fun linkModel(config: PredicateConfig) { diff --git a/src/main/kotlin/io/github/dayyeeet/solid/builder/feature/ModelModifierFeature.kt b/src/main/kotlin/io/github/dayyeeet/solid/builder/feature/ModelModifierFeature.kt index b036b86..a3f44da 100644 --- a/src/main/kotlin/io/github/dayyeeet/solid/builder/feature/ModelModifierFeature.kt +++ b/src/main/kotlin/io/github/dayyeeet/solid/builder/feature/ModelModifierFeature.kt @@ -11,6 +11,7 @@ class ModelModifierFeature : ResourcePackFeature { private val gson = Gson() override fun apply(config: ModelModifierConfig, pack: ResourcePack) { + if(pack.model(config.key) != null) return val model = gson.fromJson(config.data.toUTF8String(), JsonObject::class.java) val obj = model.get("textures").asJsonObject val map = obj.asMap() diff --git a/src/main/kotlin/io/github/dayyeeet/solid/builder/feature/ModelVariantFeature.kt b/src/main/kotlin/io/github/dayyeeet/solid/builder/feature/ModelVariantFeature.kt index c211639..217a0e1 100644 --- a/src/main/kotlin/io/github/dayyeeet/solid/builder/feature/ModelVariantFeature.kt +++ b/src/main/kotlin/io/github/dayyeeet/solid/builder/feature/ModelVariantFeature.kt @@ -11,18 +11,26 @@ import team.unnamed.creative.texture.Texture class ModelVariantFeature : ResourcePackFeature { override fun apply(config: ModelVariantConfig, pack: ResourcePack): Key { - config.textureData?.let { data -> - pack.texture(Texture.texture(config.texture, data)) + config.textureData.forEach { data -> + if(pack.texture(data.key) == null) + pack.texture(Texture.texture(data.key, data.value)) } - val model = Model.model().key(config.texture).parent(config.target) - .textures(ModelTextures.builder().layers(ModelTexture.ofKey(config.texture)).build()) + val model = Model.model().key(config.key).parent(config.target) + .textures(ModelTextures.builder().variables(config.textures).build()) pack.model(model.build()) - return config.texture + return config.key } } data class ModelVariantConfig( val target: Key, - val texture: Key, - val textureData: Writable? -) \ No newline at end of file + val key: Key, + val textures: Map, + val textureData: Map +) { + object Textures { + fun simple(texture: Key): Map { + return mapOf("layer0" to ModelTexture.ofKey(texture)) + } + } +} \ No newline at end of file diff --git a/src/test/kotlin/PredicateTest.kt b/src/test/kotlin/PredicateTest.kt index 69c39aa..ec5c947 100644 --- a/src/test/kotlin/PredicateTest.kt +++ b/src/test/kotlin/PredicateTest.kt @@ -1,31 +1,17 @@ import io.github.dayyeeet.solid.builder.AdvancedResourcePack import net.kyori.adventure.key.Key +import team.unnamed.creative.ResourcePack import team.unnamed.creative.serialize.minecraft.MinecraftResourcePackReader import java.io.File import java.io.FileOutputStream val BOOST_ARROW = Key.key("test", "item/boost_arrow") fun main() { - val pack = AdvancedResourcePack(MinecraftResourcePackReader.minecraft().readFromZipFile(File("test.zip"))) + val pack = AdvancedResourcePack(ResourcePack.resourcePack()) val mapper = TestMapper() - val fogVariant = pack.variantModel(Key.key("test", "item/fog"), Key.key("test", "item/fog1")) - pack.linkItemModel( - target = Key.key("minecraft", "item/paper"), - parent = Key.key("minecraft", "item/generated"), - BOOST_ARROW, - Key.key("test", "boost/fog"), - Key.key("test", "boost/fog_alt"), - fogVariant - ) pack.map( mapper, AdvancedResourcePack.Filters.MINECRAFT_FILTER, { model -> model.key().value().startsWith("item/") }) - val build = pack.build() - val stream = FileOutputStream(File("test.zip")) - build.data().write(stream) - stream.close() - println(mapper.get(BOOST_ARROW)) - println(mapper.get(fogVariant)) } \ No newline at end of file