Fixed boosters breaking on restart
This commit is contained in:
@@ -5,7 +5,7 @@ package com.willfp.boosters
|
||||
import com.willfp.boosters.boosters.ActivatedBooster
|
||||
import com.willfp.boosters.boosters.Booster
|
||||
import com.willfp.boosters.boosters.Boosters
|
||||
import com.willfp.boosters.boosters.addActiveBooster
|
||||
import com.willfp.boosters.boosters.activateBooster
|
||||
import com.willfp.eco.core.data.ServerProfile
|
||||
import com.willfp.eco.core.data.profile
|
||||
import org.bukkit.Bukkit
|
||||
@@ -59,17 +59,7 @@ fun Player.activateBooster(booster: Booster): Boolean {
|
||||
)
|
||||
}
|
||||
|
||||
ServerProfile.load().write(
|
||||
booster.expiryTimeKey,
|
||||
(booster.duration.toDouble() * 50) + System.currentTimeMillis()
|
||||
)
|
||||
|
||||
ServerProfile.load().write(
|
||||
booster.activeDataKey,
|
||||
this.uniqueId.toString()
|
||||
)
|
||||
|
||||
Bukkit.getServer().addActiveBooster(
|
||||
Bukkit.getServer().activateBooster(
|
||||
ActivatedBooster(booster, this.uniqueId)
|
||||
)
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.willfp.boosters
|
||||
import com.willfp.boosters.boosters.Boosters
|
||||
import com.willfp.boosters.boosters.activeBoosters
|
||||
import com.willfp.boosters.boosters.expireBooster
|
||||
import com.willfp.boosters.boosters.scanForBoosters
|
||||
import com.willfp.boosters.commands.CommandBoosters
|
||||
import com.willfp.boosters.config.BoostersYml
|
||||
import com.willfp.eco.core.command.impl.PluginCommand
|
||||
@@ -14,6 +15,7 @@ import com.willfp.eco.util.formatEco
|
||||
import com.willfp.eco.util.savedDisplayName
|
||||
import com.willfp.libreforge.LibReforgePlugin
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.command.PluginCommand
|
||||
import org.bukkit.event.Listener
|
||||
import kotlin.math.floor
|
||||
|
||||
@@ -47,6 +49,11 @@ class BoostersPlugin : LibReforgePlugin() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Just run it later enough
|
||||
this.scheduler.runLater(3) {
|
||||
Bukkit.getServer().scanForBoosters()
|
||||
}
|
||||
}
|
||||
|
||||
override fun loadListeners(): List<Listener> {
|
||||
|
||||
+24
-2
@@ -7,10 +7,23 @@ import org.bukkit.Bukkit
|
||||
import org.bukkit.OfflinePlayer
|
||||
import org.bukkit.Server
|
||||
import java.util.*
|
||||
import kotlin.contracts.contract
|
||||
|
||||
private val boosters = mutableSetOf<ActivatedBooster>()
|
||||
|
||||
fun Server.addActiveBooster(activatedBooster: ActivatedBooster) {
|
||||
fun Server.activateBooster(activatedBooster: ActivatedBooster) {
|
||||
val (booster, uuid) = activatedBooster
|
||||
|
||||
ServerProfile.load().write(
|
||||
booster.expiryTimeKey,
|
||||
(booster.duration.toDouble() * 50) + System.currentTimeMillis()
|
||||
)
|
||||
|
||||
ServerProfile.load().write(
|
||||
booster.activeDataKey,
|
||||
uuid.toString()
|
||||
)
|
||||
|
||||
boosters += activatedBooster
|
||||
}
|
||||
|
||||
@@ -26,9 +39,18 @@ fun Server.expireBooster(booster: Booster) {
|
||||
)
|
||||
}
|
||||
|
||||
fun Server.scanForBoosters() {
|
||||
for (booster in Boosters.values()) {
|
||||
val active = booster.active ?: continue
|
||||
if (!boosters.contains(active)) {
|
||||
boosters += active
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class ActivatedBooster(
|
||||
val booster: Booster,
|
||||
private val uuid: UUID
|
||||
val uuid: UUID
|
||||
) {
|
||||
val player: OfflinePlayer
|
||||
get() = Bukkit.getOfflinePlayer(uuid)
|
||||
|
||||
Reference in New Issue
Block a user