@@ -9,7 +9,6 @@ import io.github.rothes.esu.bukkit.util.extension.ListenerExt.register
99import io.github.rothes.esu.bukkit.util.extension.ListenerExt.unregister
1010import io.github.rothes.esu.bukkit.util.scheduler.ScheduledTask
1111import io.github.rothes.esu.bukkit.util.scheduler.Scheduler
12- import io.github.rothes.esu.bukkit.util.version.adapter.VaultDataAdapter.Companion.state
1312import io.github.rothes.esu.core.util.CollectionUtils.removeWhile
1413import io.github.rothes.esu.core.util.ComponentUtils.duration
1514import io.github.rothes.esu.core.util.version.Version
@@ -20,7 +19,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap
2019import org.bukkit.Material
2120import org.bukkit.World
2221import org.bukkit.block.Block
23- import org.bukkit.block.data.type. Vault
22+ import org.bukkit.block.Vault
2423import org.bukkit.event.EventHandler
2524import org.bukkit.event.Listener
2625import org.bukkit.event.block.Action
@@ -95,31 +94,23 @@ internal object VaultUnlocking: Listener {
9594
9695 val block = event.clickedBlock ? : return
9796 if (block.type != Material .VAULT ) return
98- val blockData = block.blockData as Vault
99- if (blockData.state != Vault .State .ACTIVE ) return
97+ val state = block.state as Vault
10098
101- val itemStack = event.item ? : return
102- val type = itemStack.type
103- if (type == Material .TRIAL_KEY || type == Material .OMINOUS_TRIAL_KEY ) {
104- val ominous = type == Material .OMINOUS_TRIAL_KEY
105- if (ominous != blockData.isOminous) return
99+ if (! state.keyItem.isSimilar(event.item) || ! state.hasConnectedPlayer(event.player.uniqueId))
100+ return
106101
107- val state = block.state as org.bukkit.block.Vault
108- if (state.hasRewardedPlayer(event.player.uniqueId)) return
109-
110- val now = System .currentTimeMillis()
111- val config = ExploitFixesModule .config.vaultUnlocking
112- val expired = now - config.unlockExpiry.toMillis()
113- val times = getBlockTimes(block)
114- times.removeWhile { it < expired }
115- if (times.size < config.maxUnlocksPerVault) {
116- times.add(now)
117- } else {
118- event.isCancelled = true
119- val duration = if (times.isNotEmpty()) (times.getLong(0 ) - expired).milliseconds else Duration .INFINITE
120- val user = event.player.user
121- user.message(ExploitFixesModule .lang, { vaultUnlocking.tooManyUnlocks }, duration(duration, user))
122- }
102+ val now = System .currentTimeMillis()
103+ val config = ExploitFixesModule .config.vaultUnlocking
104+ val expired = now - config.unlockExpiry.toMillis()
105+ val times = getBlockTimes(block)
106+ times.removeWhile { it < expired }
107+ if (times.size < config.maxUnlocksPerVault) {
108+ times.add(now)
109+ } else {
110+ event.isCancelled = true
111+ val duration = if (times.isNotEmpty()) (times.getLong(0 ) - expired).milliseconds else Duration .INFINITE
112+ val user = event.player.user
113+ user.message(ExploitFixesModule .lang, { vaultUnlocking.tooManyUnlocks }, duration(duration, user))
123114 }
124115 }
125116
0 commit comments