diff --git a/build.gradle b/build.gradle index c3a4583..b46d7b2 100644 --- a/build.gradle +++ b/build.gradle @@ -42,7 +42,7 @@ allprojects { } dependencies { - compileOnly 'com.willfp:eco:6.35.1' + compileOnly 'com.willfp:eco:6.37.3' implementation 'com.willfp:libreforge:3.72.1' implementation 'org.joml:joml:1.10.4' diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/BoosterUtils.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/BoosterUtils.kt index 7a072dd..9e65db6 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/BoosterUtils.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/BoosterUtils.kt @@ -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) ) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/BoostersPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/BoostersPlugin.kt index f125efc..936c115 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/BoostersPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/BoostersPlugin.kt @@ -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 { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/ActivatedBooster.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/ActivatedBooster.kt index 3fad0ec..6268229 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/ActivatedBooster.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/ActivatedBooster.kt @@ -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() -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)