Skip to content

Commit 31deb1b

Browse files
committed
ability activation and utils
1 parent c41ac12 commit 31deb1b

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

Diff for: src/main/kotlin/dev/sterner/api/item/ItemAbility.kt

+14-12
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,7 @@ enum class ItemAbility(private val equipmentSlot: EquipmentSlot?, private val cl
1919
return this.name.lowercase()
2020
}
2121

22-
fun getAvailableAbilitiesFromItem(item: Item): List<ItemAbility> {
23-
val list = mutableListOf<ItemAbility>()
24-
for (ability in entries) {
25-
// Check if the item matches the clazz or the equipmentSlot
26-
if (ability.equipmentSlot == null && ability.clazz?.isInstance(item) == true) {
27-
list.add(ability)
28-
} else if (ability.equipmentSlot != null && item is ArmorItem && item.equipmentSlot == ability.equipmentSlot) {
29-
list.add(ability)
30-
}
31-
}
32-
return list
33-
}
22+
3423

3524
fun writeNbt(): CompoundTag {
3625
val tag = CompoundTag()
@@ -42,5 +31,18 @@ enum class ItemAbility(private val equipmentSlot: EquipmentSlot?, private val cl
4231
fun readNbt(abilityTag: CompoundTag): ItemAbility {
4332
return valueOf(abilityTag.getString("Ability"))
4433
}
34+
35+
fun getAvailableAbilitiesFromItem(item: Item): Set<ItemAbility> {
36+
val list = mutableSetOf<ItemAbility>()
37+
for (ability in entries) {
38+
// Check if the item matches the clazz or the equipmentSlot
39+
if (ability.equipmentSlot == null && ability.clazz?.isInstance(item) == true) {
40+
list.add(ability)
41+
} else if (ability.equipmentSlot != null && item is ArmorItem && item.equipmentSlot == ability.equipmentSlot) {
42+
list.add(ability)
43+
}
44+
}
45+
return list
46+
}
4547
}
4648
}

Diff for: src/main/kotlin/dev/sterner/client/screen/ItemAbilityScreen.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ class ItemAbilityScreen(stack: ItemStack) : Screen(Component.literal("Ability Se
3434

3535
w = 180
3636
h = 41
37-
abilities = VoidBoundComponentRegistry.VOID_BOUND_REVELATION_COMPONENT.get(minecraft!!.player!!).unlockedItemAbilities
37+
val compatibleAbilities = ItemAbility.getAvailableAbilitiesFromItem(stack.item)
38+
val unlockedAbilities = VoidBoundComponentRegistry.VOID_BOUND_REVELATION_COMPONENT.get(minecraft!!.player!!).unlockedItemAbilities
39+
abilities = compatibleAbilities.intersect(unlockedAbilities)
3840
}
3941

4042
fun cycle(direction: Int) {

0 commit comments

Comments
 (0)