Skip to content

Commit 7c43210

Browse files
committed
[VaultUnlocking] Improve implement
1 parent 7e78463 commit 7c43210

File tree

1 file changed

+16
-25
lines changed
  • bukkit/src/main/kotlin/io/github/rothes/esu/bukkit/module/exploitfix

1 file changed

+16
-25
lines changed

bukkit/src/main/kotlin/io/github/rothes/esu/bukkit/module/exploitfix/VaultUnlocking.kt

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import io.github.rothes.esu.bukkit.util.extension.ListenerExt.register
99
import io.github.rothes.esu.bukkit.util.extension.ListenerExt.unregister
1010
import io.github.rothes.esu.bukkit.util.scheduler.ScheduledTask
1111
import io.github.rothes.esu.bukkit.util.scheduler.Scheduler
12-
import io.github.rothes.esu.bukkit.util.version.adapter.VaultDataAdapter.Companion.state
1312
import io.github.rothes.esu.core.util.CollectionUtils.removeWhile
1413
import io.github.rothes.esu.core.util.ComponentUtils.duration
1514
import io.github.rothes.esu.core.util.version.Version
@@ -20,7 +19,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap
2019
import org.bukkit.Material
2120
import org.bukkit.World
2221
import org.bukkit.block.Block
23-
import org.bukkit.block.data.type.Vault
22+
import org.bukkit.block.Vault
2423
import org.bukkit.event.EventHandler
2524
import org.bukkit.event.Listener
2625
import 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

Comments
 (0)