Re-added talisman levels
This commit is contained in:
@@ -67,6 +67,9 @@ class Talisman(
|
||||
itemStack
|
||||
).apply { register() }
|
||||
|
||||
val lowerLevel: Talisman?
|
||||
get() = Talismans.getByID(config.getString("higherLevelOf"))
|
||||
|
||||
override val effects = config.getSubsections("effects").mapNotNull {
|
||||
Effects.compile(it, "Talisman ID $id")
|
||||
}.toSet()
|
||||
|
||||
@@ -14,10 +14,7 @@ import org.bukkit.inventory.Inventory
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import org.bukkit.inventory.meta.BlockStateMeta
|
||||
import org.bukkit.persistence.PersistentDataType
|
||||
import java.util.Arrays
|
||||
import java.util.Collections
|
||||
import java.util.UUID
|
||||
import java.util.WeakHashMap
|
||||
import java.util.*
|
||||
import java.util.function.Function
|
||||
|
||||
object TalismanChecks {
|
||||
@@ -146,7 +143,7 @@ object TalismanChecks {
|
||||
}
|
||||
val state = shulkerMeta.blockState
|
||||
if (state is ShulkerBox) {
|
||||
contents.addAll(Arrays.asList(*state.inventory.contents))
|
||||
contents.addAll(state.inventory.contents)
|
||||
continue
|
||||
}
|
||||
}
|
||||
@@ -154,23 +151,33 @@ object TalismanChecks {
|
||||
contents.add(rawContent)
|
||||
}
|
||||
|
||||
val items: MutableSet<ItemStack> = HashSet()
|
||||
val items = mutableMapOf<Talisman, ItemStack>()
|
||||
|
||||
for (itemStack in contents) {
|
||||
convert(itemStack)
|
||||
getTalismanOnItem(itemStack) ?: continue
|
||||
val talis = getTalismanOnItem(itemStack) ?: continue
|
||||
if (items.size >= getLimit(player)) {
|
||||
break
|
||||
}
|
||||
items.add(itemStack)
|
||||
items[talis] = itemStack
|
||||
}
|
||||
|
||||
if (PLUGIN.configYml.getBool("top-level-only")) {
|
||||
for ((talisman, _) in items.toMap()) {
|
||||
var lowerLevel = talisman.lowerLevel
|
||||
while (lowerLevel != null) {
|
||||
items.remove(lowerLevel)
|
||||
lowerLevel = lowerLevel.lowerLevel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (useCache) {
|
||||
CACHED_TALISMAN_ITEMS[player.uniqueId] = items
|
||||
CACHED_TALISMAN_ITEMS[player.uniqueId] = items.values.toSet()
|
||||
PLUGIN.scheduler.runLater({ CACHED_TALISMAN_ITEMS.remove(player.uniqueId) }, 40)
|
||||
}
|
||||
|
||||
return items
|
||||
return items.values.toSet()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -194,16 +201,7 @@ object TalismanChecks {
|
||||
}
|
||||
}
|
||||
|
||||
val contents = getTalismanItemsOnPlayer(player, useCache, *extra)
|
||||
val found: MutableSet<Talisman> = HashSet()
|
||||
|
||||
for (itemStack in contents) {
|
||||
val talisman = getTalismanOnItem(itemStack) ?: continue
|
||||
if (found.size >= getLimit(player)) {
|
||||
break
|
||||
}
|
||||
found.add(talisman)
|
||||
}
|
||||
val found = getTalismanItemsOnPlayer(player, useCache, *extra).mapNotNull { getTalismanOnItem(it) }.toSet()
|
||||
|
||||
if (useCache) {
|
||||
CACHED_TALISMANS[player.uniqueId] = found
|
||||
|
||||
@@ -8,5 +8,6 @@ crafting:
|
||||
|
||||
read-enderchest: true # If a player's ender chest should be checked for talismans
|
||||
read-shulkerboxes: true # If a player's shulker boxes should be checked for talismans
|
||||
top-level-only: true # If only the top level of any given talisman should be activated
|
||||
|
||||
offhand-only: false # If talismans or shulkers of talismans need to be in the offhand to work
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
talismans:
|
||||
- id: "archery_1"
|
||||
- id: archery_1
|
||||
name: "&aArchery Talisman I"
|
||||
description:
|
||||
- "&8Deal 10% more damage with bows"
|
||||
higherLevelOf: ""
|
||||
item: "player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDBmOGRmYTVlZmM3NTYzMGNlMGRmNDBhNDliOGY1OWJjMjIyMTRkZTk3ZTNmYjQ0YjNjNTZlOGE5YzhhNTZiNiJ9fX0="
|
||||
craftable: true
|
||||
recipe:
|
||||
@@ -24,10 +25,11 @@ talismans:
|
||||
triggers:
|
||||
- bow_attack
|
||||
conditions: []
|
||||
- id: "archery_2"
|
||||
- id: archery_2
|
||||
name: "&eArchery Talisman II"
|
||||
description:
|
||||
- "&8Deal 20% more damage with bows"
|
||||
higherLevelOf: archery_1
|
||||
item: "player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzgzODVhNWE0Njk4MjFiOGIzM2U0N2E1YjVjNDJhZWE1OTY2MzQ2NTQ2OTM4OGExYTRkNGU1MjNlNWE4ZGRkMiJ9fX0="
|
||||
craftable: true
|
||||
recipe:
|
||||
@@ -49,10 +51,11 @@ talismans:
|
||||
triggers:
|
||||
- bow_attack
|
||||
conditions: []
|
||||
- id: "archery_3"
|
||||
- id: archery_3
|
||||
name: "&cArchery Talisman III"
|
||||
description:
|
||||
- "&8Deal 40% more damage with bows"
|
||||
higherLevelOf: archery_2
|
||||
item: "player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmQ3NDk5NWQ2Y2RhMmI4YTI0NzcyYWY5NjllZjA3N2FlM2E4NWUyMzU3YzZmNjExOWI4YTI1MDYwNDFhNDQ4YiJ9fX0="
|
||||
craftable: true
|
||||
recipe:
|
||||
@@ -75,10 +78,11 @@ talismans:
|
||||
- bow_attack
|
||||
conditions: []
|
||||
|
||||
- id: "attack_speed_1"
|
||||
- id: attack_speed_1
|
||||
name: "&aAttack Speed Talisman I"
|
||||
description:
|
||||
- "&8Attack 5% faster."
|
||||
higherLevelOf: ""
|
||||
item: "player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTVmZGRlYzM2NjU1ZDNiMzcxYzc5ZDYxMTMzNTQ4Nzc1NzcwODljMWZjYjFiM2Q4ZTAwYWYzMjYxMmYyNmYyOCJ9fX0="
|
||||
craftable: true
|
||||
recipe:
|
||||
@@ -98,10 +102,11 @@ talismans:
|
||||
args:
|
||||
multiplier: 1.05
|
||||
conditions: []
|
||||
- id: "attack_speed_2"
|
||||
- id: attack_speed_2
|
||||
name: "&eAttack Speed Talisman II"
|
||||
description:
|
||||
- "&8Attack 10% faster."
|
||||
higherLevelOf: attack_speed_1
|
||||
item: "player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzE1ZjAyZWFjNjAyNmI4ZTg3MTJjYTRkNzgxYjc5MWJiYmI3YjQ3NTVhYmRhMjdmNDYyMTg5YjkwZmVkNjZhMSJ9fX0="
|
||||
craftable: true
|
||||
recipe:
|
||||
@@ -121,10 +126,11 @@ talismans:
|
||||
args:
|
||||
multiplier: 1.1
|
||||
conditions: []
|
||||
- id: "attack_speed_3"
|
||||
- id: attack_speed_3
|
||||
name: "&cAttack Speed Talisman III"
|
||||
description:
|
||||
- "&8Attack 25% faster."
|
||||
higherLevelOf: attack_speed_2
|
||||
item: "player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjI2NjQ5MmZmMDk2MjRmZTdkYzA4MGI0YWE1ZjRiNjA4N2E3NTYzZmEwMjA3ZGY4NzdjZTUwZDI1OWE3NzM3NCJ9fX0="
|
||||
craftable: true
|
||||
recipe:
|
||||
|
||||
Reference in New Issue
Block a user