Skip to content

Commit d4b5dc7

Browse files
authored
Merge pull request #5 from solid-resourcepack/development
impl: material support
2 parents a9cabb0 + 7e66848 commit d4b5dc7

File tree

9 files changed

+75
-138
lines changed

9 files changed

+75
-138
lines changed

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ plugins {
99
}
1010

1111
group = "io.github.solid-resourcepack"
12-
version = "1.0.5"
12+
version = "1.0.6"
1313

1414
repositories {
1515
mavenCentral()
@@ -22,6 +22,7 @@ dependencies {
2222
testImplementation(rootProject.libs.kotlinTest)
2323
implementation(rootProject.libs.kotlinJvm)
2424
compileOnly(libs.paper)
25+
api(libs.soldiMaterial)
2526
api(libs.bundles.creative)
2627
}
2728

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ shadow = "8.1.1"
55
paper = "1.21-R0.1-SNAPSHOT"
66
creative = "1.7.2"
77
sonatypeCentralPortalPublisher = "1.2.3"
8+
solidMaterial = "1.21"
89

910
[libraries]
1011
kotlinJvm = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }
@@ -14,6 +15,7 @@ paper = { module = "io.papermc.paper:paper-api", version.ref = "paper" }
1415

1516
creativeApi = { module = "team.unnamed:creative-api", version.ref = "creative" }
1617
creativeSerializer = { module = "team.unnamed:creative-serializer-minecraft", version.ref = "creative" }
18+
soldiMaterial = { module = "io.github.solid-resourcepack:material-api", version.ref = "solidMaterial" }
1719

1820
[bundles]
1921
creative = [

src/main/kotlin/io/github/solid/resourcepack/api/builder/config/PredicateBuilder.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package io.github.solid.resourcepack.api.builder.config
22

33
import io.github.solid.resourcepack.api.builder.feature.PredicateConfig
4-
import io.github.solid.resourcepack.api.material.SolidMaterial
54
import io.github.solid.resourcepack.api.predicate.PredicateIncrementor
65
import io.github.solid.resourcepack.api.predicate.PredicateIncrementorType
6+
import io.github.solid.resourcepack.material.SolidBlockMaterial
7+
import io.github.solid.resourcepack.material.SolidMaterial
78
import net.kyori.adventure.key.Key
8-
import org.bukkit.Material
99

1010

1111
object Predicate {
@@ -35,7 +35,7 @@ object Predicate {
3535
}
3636

3737
fun noteBlock(): PredicateBuilder {
38-
return builder().type(PredicateIncrementorType.NOTE_BLOCK).target(SolidMaterial.from(Material.NOTE_BLOCK)!!)
38+
return builder().type(PredicateIncrementorType.NOTE_BLOCK).target(SolidBlockMaterial.NOTE_BLOCK.toGeneric())
3939
}
4040
}
4141

@@ -90,7 +90,7 @@ class PredicateBuilder : ConfigBuilder<PredicateConfig> {
9090

9191
override fun build(): PredicateConfig {
9292
if (target == null) {
93-
target = SolidMaterial.from(key!!, parent, textures)
93+
target = SolidMaterial(key!!, parent, textures)
9494
}
9595

9696
return PredicateConfig(

src/main/kotlin/io/github/solid/resourcepack/api/builder/config/SolidModelBuilder.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
package io.github.solid.resourcepack.api.builder.config
22

33
import io.github.solid.resourcepack.api.builder.feature.SolidModelConfig
4-
import io.github.solid.resourcepack.api.material.SolidMaterial
54
import io.github.solid.resourcepack.api.predicate.PredicateIncrementor
65
import io.github.solid.resourcepack.api.predicate.PredicateIncrementorType
6+
import io.github.solid.resourcepack.material.SolidItemMaterial
7+
import io.github.solid.resourcepack.material.SolidMaterial
78
import net.kyori.adventure.key.Key
89
import team.unnamed.creative.base.Writable
910
import team.unnamed.creative.texture.Texture
1011

1112
object SolidModel {
1213

13-
fun itemModel(target: SolidMaterial, model: Key): SolidModelBuilder {
14-
return SolidModelBuilder().target(target).key(model).incrementor(PredicateIncrementorType.CUSTOM_MODEL_DATA)
14+
fun itemModel(target: SolidItemMaterial, model: Key): SolidModelBuilder {
15+
return SolidModelBuilder().target(target.toGeneric()).key(model).incrementor(PredicateIncrementorType.CUSTOM_MODEL_DATA)
1516
}
1617

17-
fun itemModel(target: SolidMaterial, model: Key, writable: Writable): SolidModelBuilder {
18-
return SolidModelBuilder().target(target).key(model).data(writable)
18+
fun itemModel(target: SolidItemMaterial, model: Key, writable: Writable): SolidModelBuilder {
19+
return SolidModelBuilder().target(target.toGeneric()).key(model).data(writable)
1920
.incrementor(PredicateIncrementorType.CUSTOM_MODEL_DATA)
2021
}
2122

22-
fun itemModel(target: SolidMaterial, vararg textures: Texture): SolidModelBuilder {
23-
return SolidModelBuilder().target(target).variants(*textures)
23+
fun itemModel(target: SolidItemMaterial, vararg textures: Texture): SolidModelBuilder {
24+
return SolidModelBuilder().target(target.toGeneric()).variants(*textures)
2425
.incrementor(PredicateIncrementorType.CUSTOM_MODEL_DATA)
2526
}
2627

@@ -122,7 +123,7 @@ class SolidModelBuilder : ConfigBuilder<SolidModelConfig> {
122123

123124
override fun build(): SolidModelConfig {
124125
if (this.target == null) {
125-
this.target = SolidMaterial.from(this.key, this.targetParent, this.targetTextures)
126+
this.target = SolidMaterial(this.key, this.targetParent, this.targetTextures)
126127
}
127128
return SolidModelConfig(
128129
writable = writable,

src/main/kotlin/io/github/solid/resourcepack/api/builder/feature/PredicateFeature.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package io.github.solid.resourcepack.api.builder.feature
22

33
import io.github.solid.resourcepack.api.builder.ResourcePackFeature
4-
import io.github.solid.resourcepack.api.material.SolidMaterial
54
import io.github.solid.resourcepack.api.predicate.PredicateGenerator
65
import io.github.solid.resourcepack.api.predicate.PredicateIncrementor
6+
import io.github.solid.resourcepack.material.SolidMaterial
77
import net.kyori.adventure.key.Key
88
import team.unnamed.creative.ResourcePack
99
import team.unnamed.creative.model.Model
@@ -12,10 +12,10 @@ import team.unnamed.creative.model.ModelTextures
1212

1313
class PredicateFeature : ResourcePackFeature<PredicateConfig, Unit> {
1414
override fun apply(config: PredicateConfig, pack: ResourcePack) {
15-
val model = pack.model(config.target.minecraftKey) ?: Model.model().parent(config.target.minecraftParent)
16-
.key(config.target.minecraftKey).textures(
15+
val model = pack.model(config.target.key) ?: Model.model().parent(config.target.parent)
16+
.key(config.target.key).textures(
1717
ModelTextures.builder().let {
18-
config.target.minecraftTextures.forEach { texture ->
18+
config.target.textures.forEach { texture ->
1919
it.addVariable(
2020
texture.key,
2121
ModelTexture.ofKey(texture.value)

src/main/kotlin/io/github/solid/resourcepack/api/builder/feature/SolidModelFeature.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import io.github.solid.resourcepack.api.builder.ResourcePackFeature
44
import io.github.solid.resourcepack.api.builder.config.ModelModifier
55
import io.github.solid.resourcepack.api.builder.config.ModelVariant
66
import io.github.solid.resourcepack.api.builder.config.Predicate
7-
import io.github.solid.resourcepack.api.material.SolidMaterial
87
import io.github.solid.resourcepack.api.predicate.PredicateIncrementor
8+
import io.github.solid.resourcepack.material.SolidMaterial
99
import net.kyori.adventure.key.Key
1010
import team.unnamed.creative.ResourcePack
1111
import team.unnamed.creative.base.Writable

src/main/kotlin/io/github/solid/resourcepack/api/material/SolidMaterial.kt

Lines changed: 0 additions & 118 deletions
This file was deleted.
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package io.github.solid.resourcepack.api.material
2+
3+
import io.github.solid.resourcepack.material.SolidBlockMaterial
4+
import io.github.solid.resourcepack.material.SolidItemMaterial
5+
import io.github.solid.resourcepack.material.SolidMaterial
6+
import org.bukkit.Material
7+
import org.jetbrains.annotations.ApiStatus.Experimental
8+
9+
object SolidMaterialMapper {
10+
11+
/**
12+
* Converts a [Material] to a [SolidMaterial]
13+
* IMPORTANT: Only works in a server context
14+
*/
15+
@Experimental
16+
fun from(material: Material): SolidMaterial {
17+
if (material.isItem) {
18+
return SolidItemMaterial.valueOf(material.name).toGeneric()
19+
}
20+
if (material.isBlock) {
21+
return SolidBlockMaterial.valueOf(material.name).toGeneric()
22+
}
23+
throw IllegalArgumentException("Material $material is not supported")
24+
}
25+
26+
fun from(material: Material, type: MaterialType): SolidMaterial {
27+
val returned = mutableListOf<SolidMaterial>()
28+
if (type == MaterialType.ITEM || type == MaterialType.BOTH) {
29+
try {
30+
returned.add(SolidItemMaterial.valueOf(material.name).toGeneric())
31+
} catch (ignored: Exception) {
32+
}
33+
}
34+
35+
if (type == MaterialType.BLOCK || type == MaterialType.BOTH) {
36+
try {
37+
returned.add(SolidBlockMaterial.valueOf(material.name).toGeneric())
38+
} catch (ignored: Exception) {
39+
}
40+
}
41+
42+
if (returned.size != 1) throw IllegalArgumentException("Material $material is not supported")
43+
return returned.first()
44+
}
45+
}
46+
47+
enum class MaterialType {
48+
ITEM,
49+
BLOCK,
50+
BOTH;
51+
}

src/test/kotlin/PredicateTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import io.github.solid.resourcepack.api.builder.config.ModelVariant
33
import io.github.solid.resourcepack.api.builder.config.Predicate
44
import io.github.solid.resourcepack.api.key.KeyType
55
import io.github.solid.resourcepack.api.key.SolidKey
6-
import io.github.solid.resourcepack.api.material.SolidMaterial
6+
import io.github.solid.resourcepack.material.SolidMaterial
77
import net.kyori.adventure.key.Key
88
import org.bukkit.Material
99
import team.unnamed.creative.ResourcePack
@@ -13,7 +13,7 @@ fun main() {
1313
val pack = AdvancedResourcePack(ResourcePack.resourcePack())
1414
pack.apply(
1515
Predicate.customModelData(
16-
SolidMaterial.from(
16+
SolidMaterial(
1717
SolidKey.from(Material.POPPED_CHORUS_FRUIT, KeyType.ITEM),
1818
SolidKey.ITEM_GENERATED,
1919
ModelVariant.Textures.generic(SolidKey.from(Material.POPPED_CHORUS_FRUIT, KeyType.ITEM))

0 commit comments

Comments
 (0)