Skip to content

Commit 69242ce

Browse files
committed
Add "rarity" select type
1 parent 667e2fd commit 69242ce

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ A vanilla-like implementation of Optifine's CIT, shaped how I believe it would b
1717
- fields:
1818
- enchantment: Enchantment Identifier [REQUIRED]
1919

20+
#### Select:
21+
22+
- rarity (value of the stack rarity component)
23+
2024
## Examples
2125

2226
diamond_sword.json
@@ -62,4 +66,28 @@ enchanted_book.json
6266
}
6367
}
6468
}
69+
```
70+
71+
golden_apple.json
72+
73+
```json
74+
{
75+
"model": {
76+
"type": "minecraft:select",
77+
"property": "chit:rarity",
78+
"cases": [
79+
{
80+
"when": "rare",
81+
"model": {
82+
"type": "minecraft:model",
83+
"model": "minecraft:item/apple"
84+
}
85+
}
86+
],
87+
"fallback": {
88+
"type": "minecraft:model",
89+
"model": "minecraft:item/golden_apple"
90+
}
91+
}
92+
}
6593
```

src/main/kotlin/btw/lowercase/chit/ChitClientMod.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,25 @@ package btw.lowercase.chit
22

33
import btw.lowercase.chit.property.conditional.HasEnchantmentConditional
44
import btw.lowercase.chit.property.numeric.EnchantmentLevelNumeric
5+
import btw.lowercase.chit.property.select.RaritySelect
56
import net.fabricmc.api.ClientModInitializer
67
import net.minecraft.client.renderer.item.properties.conditional.ConditionalItemModelProperties
78
import net.minecraft.client.renderer.item.properties.numeric.RangeSelectItemModelProperties
9+
import net.minecraft.client.renderer.item.properties.select.SelectItemModelProperties
810
import net.minecraft.resources.ResourceLocation
911

1012
object ChitClientMod : ClientModInitializer {
1113
override fun onInitializeClient() {
1214
// Enchantments
1315
ConditionalItemModelProperties.ID_MAPPER.put(id("has_enchantment"), HasEnchantmentConditional.CODEC)
1416
RangeSelectItemModelProperties.ID_MAPPER.put(id("enchantment_level"), EnchantmentLevelNumeric.CODEC)
17+
18+
// Components
19+
SelectItemModelProperties.ID_MAPPER.put(id("rarity"), RaritySelect.CODEC)
20+
21+
// Custom Data
22+
23+
// Other
1524
}
1625

1726
fun id(path: String): ResourceLocation {
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package btw.lowercase.chit.property.select
2+
3+
import com.mojang.serialization.MapCodec
4+
import net.minecraft.client.multiplayer.ClientLevel
5+
import net.minecraft.client.renderer.item.properties.select.SelectItemModelProperty
6+
import net.minecraft.client.renderer.item.properties.select.SelectItemModelProperty.Type
7+
import net.minecraft.world.entity.LivingEntity
8+
import net.minecraft.world.item.ItemDisplayContext
9+
import net.minecraft.world.item.ItemStack
10+
import net.minecraft.world.item.Rarity
11+
12+
class RaritySelect() : SelectItemModelProperty<Rarity> {
13+
companion object {
14+
val CODEC = Type.create(MapCodec.unit(RaritySelect()), Rarity.CODEC)
15+
}
16+
17+
override fun get(
18+
stack: ItemStack,
19+
clientLevel: ClientLevel?,
20+
livingEntity: LivingEntity?,
21+
layer: Int,
22+
itemDisplayContext: ItemDisplayContext,
23+
): Rarity? {
24+
return stack.rarity
25+
}
26+
27+
override fun type(): Type<RaritySelect, Rarity> {
28+
return CODEC
29+
}
30+
}

0 commit comments

Comments
 (0)