.
diff --git a/README.md b/README.md
index 09e252b..c7e3086 100644
--- a/README.md
+++ b/README.md
@@ -1,42 +1,42 @@
-
-
-
-
-
-
-Source code for Boosters, a premium spigot plugin.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[]()
-
-## License
-*Click here to read [the entire license](https://github.com/Auxilor/Boosters/blob/master/LICENSE.md).*
-
-
+
+
+
+
+
+
+Source code for Boosters, a premium spigot plugin.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[]()
+
+## License
+*Click here to read [the entire license](https://github.com/Auxilor/Boosters/blob/master/LICENSE.md).*
+
+
diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml
index 1e777ee..89247e0 100644
--- a/config/checkstyle/checkstyle.xml
+++ b/config/checkstyle/checkstyle.xml
@@ -1,184 +1,184 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/config/checkstyle/suppression.xml b/config/checkstyle/suppression.xml
index 71c5aa7..f1d919c 100644
--- a/config/checkstyle/suppression.xml
+++ b/config/checkstyle/suppression.xml
@@ -1,12 +1,12 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/eco-core/core-plugin/build.gradle b/eco-core/core-plugin/build.gradle
index f18c142..dc2b970 100644
--- a/eco-core/core-plugin/build.gradle
+++ b/eco-core/core-plugin/build.gradle
@@ -1,15 +1,15 @@
-group 'com.willfp'
-version rootProject.version
-
-dependencies {
- compileOnly 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT'
-}
-
-publishing {
- publications {
- Library(MavenPublication) {
- from project.components.java
- artifact tasks.shadowJar
- }
- }
-}
+group 'com.willfp'
+version rootProject.version
+
+dependencies {
+ compileOnly 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT'
+}
+
+publishing {
+ publications {
+ Library(MavenPublication) {
+ from project.components.java
+ artifact tasks.shadowJar
+ }
+ }
+}
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 203572d..7a072dd 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
@@ -1,86 +1,86 @@
-@file:JvmName("BoosterUtils")
-
-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.eco.core.data.ServerProfile
-import com.willfp.eco.core.data.profile
-import org.bukkit.Bukkit
-import org.bukkit.OfflinePlayer
-import org.bukkit.Sound
-import org.bukkit.entity.Player
-
-val OfflinePlayer.boosters: List
- get() {
- val found = mutableListOf()
-
- for (booster in Boosters.values()) {
- val amount = this.profile.read(booster.ownedDataKey)
- for (i in 0 until amount) {
- found.add(booster)
- }
- }
-
- return found
- }
-
-fun OfflinePlayer.getAmountOfBooster(booster: Booster): Int {
- return this.profile.read(booster.ownedDataKey)
-}
-
-fun OfflinePlayer.setAmountOfBooster(booster: Booster, amount: Int) {
- this.profile.write(booster.ownedDataKey, amount)
-}
-
-fun OfflinePlayer.incrementBoosters(booster: Booster, amount: Int) {
- this.setAmountOfBooster(booster, this.getAmountOfBooster(booster) + amount)
-}
-
-fun Player.activateBooster(booster: Booster): Boolean {
- val amount = this.getAmountOfBooster(booster)
-
- if (amount <= 0) {
- return false
- }
-
- this.setAmountOfBooster(booster, amount - 1)
-
- for (activationMessage in booster.getActivationMessages(this)) {
- Bukkit.broadcastMessage(activationMessage)
- }
-
- for (expiryCommand in booster.activationCommands) {
- Bukkit.dispatchCommand(
- Bukkit.getConsoleSender(),
- expiryCommand.replace("%player%", booster.active?.player?.name ?: "")
- )
- }
-
- ServerProfile.load().write(
- booster.expiryTimeKey,
- (booster.duration.toDouble() * 50) + System.currentTimeMillis()
- )
-
- ServerProfile.load().write(
- booster.activeDataKey,
- this.uniqueId.toString()
- )
-
- Bukkit.getServer().addActiveBooster(
- ActivatedBooster(booster, this.uniqueId)
- )
-
- for (player in Bukkit.getOnlinePlayers()) {
- player.playSound(
- player.location,
- Sound.UI_TOAST_CHALLENGE_COMPLETE,
- 2f,
- 0.9f
- )
- }
-
- return true
-}
+@file:JvmName("BoosterUtils")
+
+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.eco.core.data.ServerProfile
+import com.willfp.eco.core.data.profile
+import org.bukkit.Bukkit
+import org.bukkit.OfflinePlayer
+import org.bukkit.Sound
+import org.bukkit.entity.Player
+
+val OfflinePlayer.boosters: List
+ get() {
+ val found = mutableListOf()
+
+ for (booster in Boosters.values()) {
+ val amount = this.profile.read(booster.ownedDataKey)
+ for (i in 0 until amount) {
+ found.add(booster)
+ }
+ }
+
+ return found
+ }
+
+fun OfflinePlayer.getAmountOfBooster(booster: Booster): Int {
+ return this.profile.read(booster.ownedDataKey)
+}
+
+fun OfflinePlayer.setAmountOfBooster(booster: Booster, amount: Int) {
+ this.profile.write(booster.ownedDataKey, amount)
+}
+
+fun OfflinePlayer.incrementBoosters(booster: Booster, amount: Int) {
+ this.setAmountOfBooster(booster, this.getAmountOfBooster(booster) + amount)
+}
+
+fun Player.activateBooster(booster: Booster): Boolean {
+ val amount = this.getAmountOfBooster(booster)
+
+ if (amount <= 0) {
+ return false
+ }
+
+ this.setAmountOfBooster(booster, amount - 1)
+
+ for (activationMessage in booster.getActivationMessages(this)) {
+ Bukkit.broadcastMessage(activationMessage)
+ }
+
+ for (expiryCommand in booster.activationCommands) {
+ Bukkit.dispatchCommand(
+ Bukkit.getConsoleSender(),
+ expiryCommand.replace("%player%", booster.active?.player?.name ?: "")
+ )
+ }
+
+ ServerProfile.load().write(
+ booster.expiryTimeKey,
+ (booster.duration.toDouble() * 50) + System.currentTimeMillis()
+ )
+
+ ServerProfile.load().write(
+ booster.activeDataKey,
+ this.uniqueId.toString()
+ )
+
+ Bukkit.getServer().addActiveBooster(
+ ActivatedBooster(booster, this.uniqueId)
+ )
+
+ for (player in Bukkit.getOnlinePlayers()) {
+ player.playSound(
+ player.location,
+ Sound.UI_TOAST_CHALLENGE_COMPLETE,
+ 2f,
+ 0.9f
+ )
+ }
+
+ return true
+}
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 dcc3f58..f125efc 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
@@ -1,75 +1,75 @@
-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.commands.CommandBoosters
-import com.willfp.boosters.config.BoostersYml
-import com.willfp.eco.core.command.impl.PluginCommand
-import com.willfp.eco.core.data.ServerProfile
-import com.willfp.eco.core.data.profile
-import com.willfp.eco.core.integrations.placeholder.PlaceholderManager
-import com.willfp.eco.core.placeholder.PlayerlessPlaceholder
-import com.willfp.eco.util.formatEco
-import com.willfp.eco.util.savedDisplayName
-import com.willfp.libreforge.LibReforgePlugin
-import org.bukkit.Bukkit
-import org.bukkit.event.Listener
-import kotlin.math.floor
-
-class BoostersPlugin : LibReforgePlugin() {
- val boostersYml = BoostersYml(this)
-
- override fun handleEnableAdditional() {
- this.registerHolderProvider { Bukkit.getServer().activeBoosters.map { it.booster } }
- }
-
- override fun handleReloadAdditional() {
- this.scheduler.runTimer(1, 1) {
- for (booster in Boosters.values()) {
- if (booster.active == null) {
- continue
- }
-
- if (booster.secondsLeft <= 0) {
- for (expiryMessage in booster.expiryMessages) {
- Bukkit.broadcastMessage(expiryMessage)
- }
-
- for (expiryCommand in booster.expiryCommands) {
- Bukkit.dispatchCommand(
- Bukkit.getConsoleSender(),
- expiryCommand.replace("%player%", booster.active?.player?.name ?: "")
- )
- }
-
- Bukkit.getServer().expireBooster(booster)
- }
- }
- }
- }
-
- override fun loadListeners(): List {
- return listOf(
-
- )
- }
-
- override fun loadPluginCommands(): List {
- return listOf(
- CommandBoosters(this)
- )
- }
-
- override fun getMinimumEcoVersion(): String {
- return "6.35.1"
- }
-
- init {
- instance = this
- }
-
- companion object {
- lateinit var instance: BoostersPlugin
- }
-}
+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.commands.CommandBoosters
+import com.willfp.boosters.config.BoostersYml
+import com.willfp.eco.core.command.impl.PluginCommand
+import com.willfp.eco.core.data.ServerProfile
+import com.willfp.eco.core.data.profile
+import com.willfp.eco.core.integrations.placeholder.PlaceholderManager
+import com.willfp.eco.core.placeholder.PlayerlessPlaceholder
+import com.willfp.eco.util.formatEco
+import com.willfp.eco.util.savedDisplayName
+import com.willfp.libreforge.LibReforgePlugin
+import org.bukkit.Bukkit
+import org.bukkit.event.Listener
+import kotlin.math.floor
+
+class BoostersPlugin : LibReforgePlugin() {
+ val boostersYml = BoostersYml(this)
+
+ override fun handleEnableAdditional() {
+ this.registerHolderProvider { Bukkit.getServer().activeBoosters.map { it.booster } }
+ }
+
+ override fun handleReloadAdditional() {
+ this.scheduler.runTimer(1, 1) {
+ for (booster in Boosters.values()) {
+ if (booster.active == null) {
+ continue
+ }
+
+ if (booster.secondsLeft <= 0) {
+ for (expiryMessage in booster.expiryMessages) {
+ Bukkit.broadcastMessage(expiryMessage)
+ }
+
+ for (expiryCommand in booster.expiryCommands) {
+ Bukkit.dispatchCommand(
+ Bukkit.getConsoleSender(),
+ expiryCommand.replace("%player%", booster.active?.player?.name ?: "")
+ )
+ }
+
+ Bukkit.getServer().expireBooster(booster)
+ }
+ }
+ }
+ }
+
+ override fun loadListeners(): List {
+ return listOf(
+
+ )
+ }
+
+ override fun loadPluginCommands(): List {
+ return listOf(
+ CommandBoosters(this)
+ )
+ }
+
+ override fun getMinimumEcoVersion(): String {
+ return "6.35.1"
+ }
+
+ init {
+ instance = this
+ }
+
+ companion object {
+ lateinit var instance: BoostersPlugin
+ }
+}
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 6d7d5cc..3fad0ec 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
@@ -1,47 +1,47 @@
-@file:Suppress("unused")
-
-package com.willfp.boosters.boosters
-
-import com.willfp.eco.core.data.ServerProfile
-import org.bukkit.Bukkit
-import org.bukkit.OfflinePlayer
-import org.bukkit.Server
-import java.util.*
-
-private val boosters = mutableSetOf()
-
-fun Server.addActiveBooster(activatedBooster: ActivatedBooster) {
- boosters += activatedBooster
-}
-
-val Server.activeBoosters: Set
- get() = boosters.toSet()
-
-fun Server.expireBooster(booster: Booster) {
- boosters.removeIf { it.booster == booster }
-
- ServerProfile.load().write(
- booster.activeDataKey,
- ""
- )
-}
-
-data class ActivatedBooster(
- val booster: Booster,
- private val uuid: UUID
-) {
- val player: OfflinePlayer
- get() = Bukkit.getOfflinePlayer(uuid)
-
- override fun equals(other: Any?): Boolean {
- if (other !is ActivatedBooster) {
- return false
- }
-
- return other.booster == this.booster
- }
-
- override fun hashCode(): Int {
- return Objects.hash(this.booster)
- }
-}
+@file:Suppress("unused")
+
+package com.willfp.boosters.boosters
+
+import com.willfp.eco.core.data.ServerProfile
+import org.bukkit.Bukkit
+import org.bukkit.OfflinePlayer
+import org.bukkit.Server
+import java.util.*
+
+private val boosters = mutableSetOf()
+
+fun Server.addActiveBooster(activatedBooster: ActivatedBooster) {
+ boosters += activatedBooster
+}
+
+val Server.activeBoosters: Set
+ get() = boosters.toSet()
+
+fun Server.expireBooster(booster: Booster) {
+ boosters.removeIf { it.booster == booster }
+
+ ServerProfile.load().write(
+ booster.activeDataKey,
+ ""
+ )
+}
+
+data class ActivatedBooster(
+ val booster: Booster,
+ private val uuid: UUID
+) {
+ val player: OfflinePlayer
+ get() = Bukkit.getOfflinePlayer(uuid)
+
+ override fun equals(other: Any?): Boolean {
+ if (other !is ActivatedBooster) {
+ return false
+ }
+
+ return other.booster == this.booster
+ }
+
+ override fun hashCode(): Int {
+ return Objects.hash(this.booster)
+ }
+}
diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/Booster.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/Booster.kt
index 98be6e7..d4f76c1 100644
--- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/Booster.kt
+++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/Booster.kt
@@ -1,192 +1,192 @@
-package com.willfp.boosters.boosters
-
-import com.willfp.boosters.BoostersPlugin
-import com.willfp.boosters.getAmountOfBooster
-import com.willfp.eco.core.config.interfaces.Config
-import com.willfp.eco.core.data.keys.PersistentDataKey
-import com.willfp.eco.core.data.keys.PersistentDataKeyType
-import com.willfp.eco.core.data.profile
-import com.willfp.eco.core.integrations.placeholder.PlaceholderManager
-import com.willfp.eco.core.items.Items
-import com.willfp.eco.core.items.builder.ItemStackBuilder
-import com.willfp.eco.core.placeholder.PlayerlessPlaceholder
-import com.willfp.eco.util.StringUtils
-import com.willfp.eco.util.formatEco
-import com.willfp.eco.util.savedDisplayName
-import com.willfp.libreforge.Holder
-import com.willfp.libreforge.conditions.Conditions
-import com.willfp.libreforge.effects.Effects
-import org.bukkit.Bukkit
-import org.bukkit.entity.Player
-import org.bukkit.inventory.ItemStack
-import java.util.*
-import kotlin.math.floor
-
-class Booster(
- private val plugin: BoostersPlugin,
- val config: Config,
-) : Holder {
- override val id = config.getString("id")
-
- val ownedDataKey: PersistentDataKey = PersistentDataKey(
- plugin.namespacedKeyFactory.create(id),
- PersistentDataKeyType.INT,
- 0
- ).player()
-
- val activeDataKey: PersistentDataKey = PersistentDataKey(
- plugin.namespacedKeyFactory.create("${id}_active"),
- PersistentDataKeyType.STRING,
- ""
- ).server()
-
- val expiryTimeKey = PersistentDataKey(
- plugin.namespacedKeyFactory.create("${id}_expiry_time"),
- PersistentDataKeyType.DOUBLE,
- 0.0
- ).server()
-
- val active: ActivatedBooster?
- get() {
- val activeKey = Bukkit.getServer().profile.read(activeDataKey)
-
- if (activeKey.isEmpty()) {
- return null
- }
-
- val uuid = UUID.fromString(activeKey)
-
- return ActivatedBooster(this, uuid)
- }
-
- val secondsLeft: Int
- get() {
- val endTime = Bukkit.getServer().profile.read(expiryTimeKey)
- val currentTime = System.currentTimeMillis()
- return if (endTime < currentTime || active == null) {
- 0
- } else {
- ((endTime - currentTime) / 1000).toInt()
- }
- }
-
- val name = config.getFormattedString("name")
-
- val duration = config.getInt("duration")
-
- fun getActivationMessages(player: Player): List {
- val messages = mutableListOf()
-
- for (string in config.getFormattedStrings(
- "messages.activation",
- StringUtils.FormatOption.WITHOUT_PLACEHOLDERS
- )) {
- messages.add(string.replace("%player%", player.displayName))
- }
-
- return messages
- }
-
- val expiryMessages: List = config.getFormattedStrings("messages.expiry")
-
- val activationCommands: List = config.getFormattedStrings("commands.activation")
-
- val expiryCommands: List = config.getFormattedStrings("commands.expiry")
-
- fun getGuiItem(player: Player): ItemStack {
- return ItemStackBuilder(Items.lookup(config.getString("gui.item")))
- .setDisplayName(config.getFormattedString("gui.name"))
- .addLoreLines(
- config.getStrings("gui.lore")
- .map { it.replace("%amount%", player.getAmountOfBooster(this).toString()) }
- .formatEco(player)
- )
- .build()
- }
-
- val guiRow = config.getInt("gui.position.row")
-
- val guiColumn = config.getInt("gui.position.column")
-
- override val conditions = config.getSubsections("conditions").mapNotNull {
- Conditions.compile(it, "Booster $id")
- }.toSet()
-
- override val effects = config.getSubsections("effects").mapNotNull {
- Effects.compile(it, "Booster $id")
- }.toSet()
-
- init {
- Boosters.addNewBooster(this)
- PlaceholderManager.registerPlaceholder(
- PlayerlessPlaceholder(
- plugin,
- "${id}_info"
- ) {
- val active = this.active
-
- if (active != null) {
- plugin.langYml.getString("active-placeholder")
- .replace("%player%", active.player.savedDisplayName)
- .replace("%booster%", active.booster.name)
- .formatEco(formatPlaceholders = false)
- } else {
- plugin.langYml.getString("no-currently-active")
- .formatEco(formatPlaceholders = false)
- }
- }
- )
-
- PlaceholderManager.registerPlaceholder(
- PlayerlessPlaceholder(
- plugin,
- "${id}_player",
- ) {
- active?.player?.savedDisplayName ?: ""
- }
- )
-
- PlaceholderManager.registerPlaceholder(
- PlayerlessPlaceholder(
- plugin,
- "${id}_seconds_remaining"
- ) {
- secondsLeft.toString()
- }
- )
-
- PlaceholderManager.registerPlaceholder(
- PlayerlessPlaceholder(
- plugin,
- "${id}_time_remaining"
- ) {
- if (secondsLeft <= 0) {
- return@PlayerlessPlaceholder "00:00:00"
- }
-
- // if you've seen this code on the internet, no you haven't. shush
- val seconds = secondsLeft % 3600 % 60
- val minutes = floor(secondsLeft % 3600 / 60.0).toInt()
- val hours = floor(secondsLeft / 3600.0).toInt()
-
- val hh = (if (hours < 10) "0" else "") + hours
- val mm = (if (minutes < 10) "0" else "") + minutes
- val ss = (if (seconds < 10) "0" else "") + seconds
-
- "${hh}:${mm}:${ss}"
- }
- )
- }
-
- override fun equals(other: Any?): Boolean {
- if (other !is Booster) {
- return false
- }
-
- return other.id == this.id
- }
-
- override fun hashCode(): Int {
- return this.id.hashCode()
- }
-}
+package com.willfp.boosters.boosters
+
+import com.willfp.boosters.BoostersPlugin
+import com.willfp.boosters.getAmountOfBooster
+import com.willfp.eco.core.config.interfaces.Config
+import com.willfp.eco.core.data.keys.PersistentDataKey
+import com.willfp.eco.core.data.keys.PersistentDataKeyType
+import com.willfp.eco.core.data.profile
+import com.willfp.eco.core.integrations.placeholder.PlaceholderManager
+import com.willfp.eco.core.items.Items
+import com.willfp.eco.core.items.builder.ItemStackBuilder
+import com.willfp.eco.core.placeholder.PlayerlessPlaceholder
+import com.willfp.eco.util.StringUtils
+import com.willfp.eco.util.formatEco
+import com.willfp.eco.util.savedDisplayName
+import com.willfp.libreforge.Holder
+import com.willfp.libreforge.conditions.Conditions
+import com.willfp.libreforge.effects.Effects
+import org.bukkit.Bukkit
+import org.bukkit.entity.Player
+import org.bukkit.inventory.ItemStack
+import java.util.*
+import kotlin.math.floor
+
+class Booster(
+ private val plugin: BoostersPlugin,
+ val config: Config,
+) : Holder {
+ override val id = config.getString("id")
+
+ val ownedDataKey: PersistentDataKey = PersistentDataKey(
+ plugin.namespacedKeyFactory.create(id),
+ PersistentDataKeyType.INT,
+ 0
+ ).player()
+
+ val activeDataKey: PersistentDataKey = PersistentDataKey(
+ plugin.namespacedKeyFactory.create("${id}_active"),
+ PersistentDataKeyType.STRING,
+ ""
+ ).server()
+
+ val expiryTimeKey = PersistentDataKey(
+ plugin.namespacedKeyFactory.create("${id}_expiry_time"),
+ PersistentDataKeyType.DOUBLE,
+ 0.0
+ ).server()
+
+ val active: ActivatedBooster?
+ get() {
+ val activeKey = Bukkit.getServer().profile.read(activeDataKey)
+
+ if (activeKey.isEmpty()) {
+ return null
+ }
+
+ val uuid = UUID.fromString(activeKey)
+
+ return ActivatedBooster(this, uuid)
+ }
+
+ val secondsLeft: Int
+ get() {
+ val endTime = Bukkit.getServer().profile.read(expiryTimeKey)
+ val currentTime = System.currentTimeMillis()
+ return if (endTime < currentTime || active == null) {
+ 0
+ } else {
+ ((endTime - currentTime) / 1000).toInt()
+ }
+ }
+
+ val name = config.getFormattedString("name")
+
+ val duration = config.getInt("duration")
+
+ fun getActivationMessages(player: Player): List {
+ val messages = mutableListOf()
+
+ for (string in config.getFormattedStrings(
+ "messages.activation",
+ StringUtils.FormatOption.WITHOUT_PLACEHOLDERS
+ )) {
+ messages.add(string.replace("%player%", player.displayName))
+ }
+
+ return messages
+ }
+
+ val expiryMessages: List = config.getFormattedStrings("messages.expiry")
+
+ val activationCommands: List = config.getFormattedStrings("commands.activation")
+
+ val expiryCommands: List = config.getFormattedStrings("commands.expiry")
+
+ fun getGuiItem(player: Player): ItemStack {
+ return ItemStackBuilder(Items.lookup(config.getString("gui.item")))
+ .setDisplayName(config.getFormattedString("gui.name"))
+ .addLoreLines(
+ config.getStrings("gui.lore")
+ .map { it.replace("%amount%", player.getAmountOfBooster(this).toString()) }
+ .formatEco(player)
+ )
+ .build()
+ }
+
+ val guiRow = config.getInt("gui.position.row")
+
+ val guiColumn = config.getInt("gui.position.column")
+
+ override val conditions = config.getSubsections("conditions").mapNotNull {
+ Conditions.compile(it, "Booster $id")
+ }.toSet()
+
+ override val effects = config.getSubsections("effects").mapNotNull {
+ Effects.compile(it, "Booster $id")
+ }.toSet()
+
+ init {
+ Boosters.addNewBooster(this)
+ PlaceholderManager.registerPlaceholder(
+ PlayerlessPlaceholder(
+ plugin,
+ "${id}_info"
+ ) {
+ val active = this.active
+
+ if (active != null) {
+ plugin.langYml.getString("active-placeholder")
+ .replace("%player%", active.player.savedDisplayName)
+ .replace("%booster%", active.booster.name)
+ .formatEco(formatPlaceholders = false)
+ } else {
+ plugin.langYml.getString("no-currently-active")
+ .formatEco(formatPlaceholders = false)
+ }
+ }
+ )
+
+ PlaceholderManager.registerPlaceholder(
+ PlayerlessPlaceholder(
+ plugin,
+ "${id}_player",
+ ) {
+ active?.player?.savedDisplayName ?: ""
+ }
+ )
+
+ PlaceholderManager.registerPlaceholder(
+ PlayerlessPlaceholder(
+ plugin,
+ "${id}_seconds_remaining"
+ ) {
+ secondsLeft.toString()
+ }
+ )
+
+ PlaceholderManager.registerPlaceholder(
+ PlayerlessPlaceholder(
+ plugin,
+ "${id}_time_remaining"
+ ) {
+ if (secondsLeft <= 0) {
+ return@PlayerlessPlaceholder "00:00:00"
+ }
+
+ // if you've seen this code on the internet, no you haven't. shush
+ val seconds = secondsLeft % 3600 % 60
+ val minutes = floor(secondsLeft % 3600 / 60.0).toInt()
+ val hours = floor(secondsLeft / 3600.0).toInt()
+
+ val hh = (if (hours < 10) "0" else "") + hours
+ val mm = (if (minutes < 10) "0" else "") + minutes
+ val ss = (if (seconds < 10) "0" else "") + seconds
+
+ "${hh}:${mm}:${ss}"
+ }
+ )
+ }
+
+ override fun equals(other: Any?): Boolean {
+ if (other !is Booster) {
+ return false
+ }
+
+ return other.id == this.id
+ }
+
+ override fun hashCode(): Int {
+ return this.id.hashCode()
+ }
+}
diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/Boosters.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/Boosters.kt
index ded2665..a75d1c9 100644
--- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/Boosters.kt
+++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/boosters/Boosters.kt
@@ -1,76 +1,76 @@
-package com.willfp.boosters.boosters
-
-import com.google.common.collect.BiMap
-import com.google.common.collect.HashBiMap
-import com.google.common.collect.ImmutableList
-import com.willfp.boosters.BoostersPlugin
-import com.willfp.eco.core.config.updating.ConfigUpdater
-import com.willfp.libreforge.chains.EffectChains
-
-object Boosters {
- /**
- * Registered boosters.
- */
- private val BY_ID: BiMap = HashBiMap.create()
-
- /**
- * Get all registered [Booster]s.
- *
- * @return A list of all [Booster]s.
- */
- @JvmStatic
- fun values(): List {
- return ImmutableList.copyOf(BY_ID.values)
- }
-
- /**
- * Get [Booster] matching ID.
- *
- * @param name The name to search for.
- * @return The matching [Booster], or null if not found.
- */
- @JvmStatic
- fun getByID(name: String): Booster? {
- return BY_ID[name]
- }
-
- /**
- * Update all [Booster]s.
- *
- * @param plugin Instance of Booster.
- */
- @ConfigUpdater
- @JvmStatic
- fun update(plugin: BoostersPlugin) {
- plugin.boostersYml.getSubsections("chains").mapNotNull {
- EffectChains.compile(it, "Effect Chains")
- }
- for (booster in values()) {
- removeBooster(booster)
- }
- for (config in plugin.boostersYml.getSubsections("boosters")) {
- Booster(plugin, config)
- }
- }
-
- /**
- * Add new [Booster] to Booster.
- *
- * @param booster The [Booster] to add.
- */
- @JvmStatic
- fun addNewBooster(booster: Booster) {
- BY_ID.remove(booster.id)
- BY_ID[booster.id] = booster
- }
-
- /**
- * Remove [Booster] from Booster.
- *
- * @param booster The [Booster] to remove.
- */
- @JvmStatic
- fun removeBooster(booster: Booster) {
- BY_ID.remove(booster.id)
- }
-}
+package com.willfp.boosters.boosters
+
+import com.google.common.collect.BiMap
+import com.google.common.collect.HashBiMap
+import com.google.common.collect.ImmutableList
+import com.willfp.boosters.BoostersPlugin
+import com.willfp.eco.core.config.updating.ConfigUpdater
+import com.willfp.libreforge.chains.EffectChains
+
+object Boosters {
+ /**
+ * Registered boosters.
+ */
+ private val BY_ID: BiMap = HashBiMap.create()
+
+ /**
+ * Get all registered [Booster]s.
+ *
+ * @return A list of all [Booster]s.
+ */
+ @JvmStatic
+ fun values(): List {
+ return ImmutableList.copyOf(BY_ID.values)
+ }
+
+ /**
+ * Get [Booster] matching ID.
+ *
+ * @param name The name to search for.
+ * @return The matching [Booster], or null if not found.
+ */
+ @JvmStatic
+ fun getByID(name: String): Booster? {
+ return BY_ID[name]
+ }
+
+ /**
+ * Update all [Booster]s.
+ *
+ * @param plugin Instance of Booster.
+ */
+ @ConfigUpdater
+ @JvmStatic
+ fun update(plugin: BoostersPlugin) {
+ plugin.boostersYml.getSubsections("chains").mapNotNull {
+ EffectChains.compile(it, "Effect Chains")
+ }
+ for (booster in values()) {
+ removeBooster(booster)
+ }
+ for (config in plugin.boostersYml.getSubsections("boosters")) {
+ Booster(plugin, config)
+ }
+ }
+
+ /**
+ * Add new [Booster] to Booster.
+ *
+ * @param booster The [Booster] to add.
+ */
+ @JvmStatic
+ fun addNewBooster(booster: Booster) {
+ BY_ID.remove(booster.id)
+ BY_ID[booster.id] = booster
+ }
+
+ /**
+ * Remove [Booster] from Booster.
+ *
+ * @param booster The [Booster] to remove.
+ */
+ @JvmStatic
+ fun removeBooster(booster: Booster) {
+ BY_ID.remove(booster.id)
+ }
+}
diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandActivate.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandActivate.kt
index 6ceaa22..dc06a6a 100644
--- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandActivate.kt
+++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandActivate.kt
@@ -1,53 +1,53 @@
-package com.willfp.boosters.commands
-
-import com.willfp.boosters.activateBooster
-import com.willfp.boosters.boosters.Boosters
-import com.willfp.boosters.incrementBoosters
-import com.willfp.eco.core.EcoPlugin
-import com.willfp.eco.core.command.impl.Subcommand
-import org.bukkit.command.CommandSender
-import org.bukkit.entity.Player
-import org.bukkit.util.StringUtil
-
-class CommandActivate(plugin: EcoPlugin) :
- Subcommand(
- plugin,
- "activate",
- "boosters.command.activate",
- true
- ) {
-
- override fun onExecute(sender: CommandSender, args: List) {
- val player = sender as? Player ?: return
-
- if (args.isEmpty()) {
- sender.sendMessage(plugin.langYml.getMessage("requires-booster"))
- return
- }
-
- val booster = Boosters.getByID(args[0].lowercase())
-
- if (booster == null) {
- sender.sendMessage(plugin.langYml.getMessage("invalid-booster"))
- return
- }
-
- player.incrementBoosters(booster, 1)
- player.activateBooster(booster)
- }
-
- override fun tabComplete(sender: CommandSender, args: List): List {
- val completions = mutableListOf()
-
- if (args.size == 1) {
- StringUtil.copyPartialMatches(
- args[0],
- Boosters.values().map { it.id },
- completions
- )
- return completions
- }
-
- return emptyList()
- }
-}
+package com.willfp.boosters.commands
+
+import com.willfp.boosters.activateBooster
+import com.willfp.boosters.boosters.Boosters
+import com.willfp.boosters.incrementBoosters
+import com.willfp.eco.core.EcoPlugin
+import com.willfp.eco.core.command.impl.Subcommand
+import org.bukkit.command.CommandSender
+import org.bukkit.entity.Player
+import org.bukkit.util.StringUtil
+
+class CommandActivate(plugin: EcoPlugin) :
+ Subcommand(
+ plugin,
+ "activate",
+ "boosters.command.activate",
+ true
+ ) {
+
+ override fun onExecute(sender: CommandSender, args: List) {
+ val player = sender as? Player ?: return
+
+ if (args.isEmpty()) {
+ sender.sendMessage(plugin.langYml.getMessage("requires-booster"))
+ return
+ }
+
+ val booster = Boosters.getByID(args[0].lowercase())
+
+ if (booster == null) {
+ sender.sendMessage(plugin.langYml.getMessage("invalid-booster"))
+ return
+ }
+
+ player.incrementBoosters(booster, 1)
+ player.activateBooster(booster)
+ }
+
+ override fun tabComplete(sender: CommandSender, args: List): List {
+ val completions = mutableListOf()
+
+ if (args.size == 1) {
+ StringUtil.copyPartialMatches(
+ args[0],
+ Boosters.values().map { it.id },
+ completions
+ )
+ return completions
+ }
+
+ return emptyList()
+ }
+}
diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandBoosters.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandBoosters.kt
index ec48372..5bbd8c2 100644
--- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandBoosters.kt
+++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandBoosters.kt
@@ -1,32 +1,32 @@
-package com.willfp.boosters.commands
-
-import com.willfp.boosters.gui.BoosterGUI
-import com.willfp.eco.core.EcoPlugin
-import com.willfp.eco.core.command.impl.PluginCommand
-import org.bukkit.command.CommandSender
-import org.bukkit.entity.Player
-
-class CommandBoosters(plugin: EcoPlugin) :
- PluginCommand(
- plugin,
- "boosters",
- "boosters.command.boosters",
- false
- ) {
-
- init {
- this.addSubcommand(CommandGive(plugin))
- .addSubcommand(CommandReload(plugin))
- .addSubcommand(CommandCancel(plugin))
- .addSubcommand(CommandActivate(plugin))
- }
-
- override fun onExecute(sender: CommandSender, args: List) {
- if (sender !is Player) {
- sender.sendMessage(this.plugin.langYml.getMessage("not-player"))
- return
- }
-
- BoosterGUI.open(sender)
- }
-}
+package com.willfp.boosters.commands
+
+import com.willfp.boosters.gui.BoosterGUI
+import com.willfp.eco.core.EcoPlugin
+import com.willfp.eco.core.command.impl.PluginCommand
+import org.bukkit.command.CommandSender
+import org.bukkit.entity.Player
+
+class CommandBoosters(plugin: EcoPlugin) :
+ PluginCommand(
+ plugin,
+ "boosters",
+ "boosters.command.boosters",
+ false
+ ) {
+
+ init {
+ this.addSubcommand(CommandGive(plugin))
+ .addSubcommand(CommandReload(plugin))
+ .addSubcommand(CommandCancel(plugin))
+ .addSubcommand(CommandActivate(plugin))
+ }
+
+ override fun onExecute(sender: CommandSender, args: List) {
+ if (sender !is Player) {
+ sender.sendMessage(this.plugin.langYml.getMessage("not-player"))
+ return
+ }
+
+ BoosterGUI.open(sender)
+ }
+}
diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandCancel.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandCancel.kt
index 1f0bec2..05f4980 100644
--- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandCancel.kt
+++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandCancel.kt
@@ -1,25 +1,25 @@
-package com.willfp.boosters.commands
-
-import com.willfp.boosters.BoostersPlugin
-import com.willfp.boosters.boosters.activeBoosters
-import com.willfp.boosters.boosters.expireBooster
-import com.willfp.eco.core.EcoPlugin
-import com.willfp.eco.core.command.impl.Subcommand
-import org.bukkit.Bukkit
-import org.bukkit.command.CommandSender
-
-class CommandCancel(plugin: EcoPlugin) :
- Subcommand(
- plugin,
- "cancel",
- "boosters.command.cancel",
- false
- ) {
-
- override fun onExecute(sender: CommandSender, args: List) {
- for (booster in Bukkit.getServer().activeBoosters) {
- Bukkit.getServer().expireBooster(booster.booster)
- }
- sender.sendMessage(plugin.langYml.getMessage("cancelled"))
- }
-}
+package com.willfp.boosters.commands
+
+import com.willfp.boosters.BoostersPlugin
+import com.willfp.boosters.boosters.activeBoosters
+import com.willfp.boosters.boosters.expireBooster
+import com.willfp.eco.core.EcoPlugin
+import com.willfp.eco.core.command.impl.Subcommand
+import org.bukkit.Bukkit
+import org.bukkit.command.CommandSender
+
+class CommandCancel(plugin: EcoPlugin) :
+ Subcommand(
+ plugin,
+ "cancel",
+ "boosters.command.cancel",
+ false
+ ) {
+
+ override fun onExecute(sender: CommandSender, args: List) {
+ for (booster in Bukkit.getServer().activeBoosters) {
+ Bukkit.getServer().expireBooster(booster.booster)
+ }
+ sender.sendMessage(plugin.langYml.getMessage("cancelled"))
+ }
+}
diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandGive.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandGive.kt
index 243598f..18c8a46 100644
--- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandGive.kt
+++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandGive.kt
@@ -1,100 +1,100 @@
-package com.willfp.boosters.commands
-
-import com.willfp.boosters.boosters.Boosters
-import com.willfp.boosters.incrementBoosters
-import com.willfp.eco.core.EcoPlugin
-import com.willfp.eco.core.command.impl.Subcommand
-import com.willfp.eco.util.StringUtils
-import org.bukkit.Bukkit
-import org.bukkit.command.CommandSender
-import org.bukkit.util.StringUtil
-
-class CommandGive(plugin: EcoPlugin) :
- Subcommand(
- plugin,
- "give",
- "boosters.command.give",
- false
- ) {
-
- override fun onExecute(sender: CommandSender, args: List) {
- if (args.isEmpty()) {
- sender.sendMessage(plugin.langYml.getMessage("requires-player"))
- return
- }
-
- if (args.size == 1) {
- sender.sendMessage(plugin.langYml.getMessage("requires-booster"))
- return
- }
-
- val booster = Boosters.getByID(args[1].lowercase())
-
- if (booster == null) {
- sender.sendMessage(plugin.langYml.getMessage("invalid-booster"))
- return
- }
-
- var amount = 1
-
- if (args.size >= 3) {
- amount = args[2].toIntOrNull() ?: amount
- }
-
- @Suppress("DEPRECATION")
- val player = Bukkit.getOfflinePlayer(args[0])
- if (!player.hasPlayedBefore()) {
- sender.sendMessage(plugin.langYml.getMessage("invalid-player"))
- return
- }
-
- player.incrementBoosters(booster, amount)
-
- sender.sendMessage(
- plugin.langYml.getMessage("gave-booster", StringUtils.FormatOption.WITHOUT_PLACEHOLDERS)
- .replace("%player%", player.name ?: return)
- .replace("%booster%", booster.name)
- .replace("%amount%", amount.toString())
- )
- }
-
- override fun tabComplete(sender: CommandSender, args: List): List {
- val completions = mutableListOf()
-
- if (args.size == 1) {
- StringUtil.copyPartialMatches(
- args[0],
- Bukkit.getOnlinePlayers().map { player -> player.name }.toCollection(ArrayList()),
- completions
- )
- return completions
- }
-
- if (args.size == 2) {
- StringUtil.copyPartialMatches(
- args[1],
- Boosters.values().map { it.id },
- completions
- )
- return completions
- }
-
- if (args.size == 3) {
- StringUtil.copyPartialMatches(
- args[2],
- listOf(
- "1",
- "2",
- "3",
- "4",
- "5",
- "10"
- ),
- completions
- )
- return completions
- }
-
- return emptyList()
- }
-}
+package com.willfp.boosters.commands
+
+import com.willfp.boosters.boosters.Boosters
+import com.willfp.boosters.incrementBoosters
+import com.willfp.eco.core.EcoPlugin
+import com.willfp.eco.core.command.impl.Subcommand
+import com.willfp.eco.util.StringUtils
+import org.bukkit.Bukkit
+import org.bukkit.command.CommandSender
+import org.bukkit.util.StringUtil
+
+class CommandGive(plugin: EcoPlugin) :
+ Subcommand(
+ plugin,
+ "give",
+ "boosters.command.give",
+ false
+ ) {
+
+ override fun onExecute(sender: CommandSender, args: List) {
+ if (args.isEmpty()) {
+ sender.sendMessage(plugin.langYml.getMessage("requires-player"))
+ return
+ }
+
+ if (args.size == 1) {
+ sender.sendMessage(plugin.langYml.getMessage("requires-booster"))
+ return
+ }
+
+ val booster = Boosters.getByID(args[1].lowercase())
+
+ if (booster == null) {
+ sender.sendMessage(plugin.langYml.getMessage("invalid-booster"))
+ return
+ }
+
+ var amount = 1
+
+ if (args.size >= 3) {
+ amount = args[2].toIntOrNull() ?: amount
+ }
+
+ @Suppress("DEPRECATION")
+ val player = Bukkit.getOfflinePlayer(args[0])
+ if (!player.hasPlayedBefore()) {
+ sender.sendMessage(plugin.langYml.getMessage("invalid-player"))
+ return
+ }
+
+ player.incrementBoosters(booster, amount)
+
+ sender.sendMessage(
+ plugin.langYml.getMessage("gave-booster", StringUtils.FormatOption.WITHOUT_PLACEHOLDERS)
+ .replace("%player%", player.name ?: return)
+ .replace("%booster%", booster.name)
+ .replace("%amount%", amount.toString())
+ )
+ }
+
+ override fun tabComplete(sender: CommandSender, args: List): List {
+ val completions = mutableListOf()
+
+ if (args.size == 1) {
+ StringUtil.copyPartialMatches(
+ args[0],
+ Bukkit.getOnlinePlayers().map { player -> player.name }.toCollection(ArrayList()),
+ completions
+ )
+ return completions
+ }
+
+ if (args.size == 2) {
+ StringUtil.copyPartialMatches(
+ args[1],
+ Boosters.values().map { it.id },
+ completions
+ )
+ return completions
+ }
+
+ if (args.size == 3) {
+ StringUtil.copyPartialMatches(
+ args[2],
+ listOf(
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "10"
+ ),
+ completions
+ )
+ return completions
+ }
+
+ return emptyList()
+ }
+}
diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandReload.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandReload.kt
index e2f1ac4..3656c5d 100644
--- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandReload.kt
+++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/commands/CommandReload.kt
@@ -1,19 +1,19 @@
-package com.willfp.boosters.commands
-
-import com.willfp.eco.core.EcoPlugin
-import com.willfp.eco.core.command.impl.Subcommand
-import org.bukkit.command.CommandSender
-
-class CommandReload(plugin: EcoPlugin) :
- Subcommand(
- plugin,
- "reload",
- "boosters.command.reload",
- false
- ) {
-
- override fun onExecute(sender: CommandSender, args: List) {
- plugin.reload()
- sender.sendMessage(plugin.langYml.getMessage("reloaded"))
- }
+package com.willfp.boosters.commands
+
+import com.willfp.eco.core.EcoPlugin
+import com.willfp.eco.core.command.impl.Subcommand
+import org.bukkit.command.CommandSender
+
+class CommandReload(plugin: EcoPlugin) :
+ Subcommand(
+ plugin,
+ "reload",
+ "boosters.command.reload",
+ false
+ ) {
+
+ override fun onExecute(sender: CommandSender, args: List) {
+ plugin.reload()
+ sender.sendMessage(plugin.langYml.getMessage("reloaded"))
+ }
}
\ No newline at end of file
diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/config/BoostersYml.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/config/BoostersYml.kt
index e997a0b..4197305 100644
--- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/config/BoostersYml.kt
+++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/config/BoostersYml.kt
@@ -1,12 +1,12 @@
-package com.willfp.boosters.config
-
-import com.willfp.eco.core.EcoPlugin
-import com.willfp.eco.core.config.BaseConfig
-import com.willfp.eco.core.config.ConfigType
-
-class BoostersYml(plugin: EcoPlugin) : BaseConfig(
- "boosters",
- plugin,
- false,
- ConfigType.YAML
-)
+package com.willfp.boosters.config
+
+import com.willfp.eco.core.EcoPlugin
+import com.willfp.eco.core.config.BaseConfig
+import com.willfp.eco.core.config.ConfigType
+
+class BoostersYml(plugin: EcoPlugin) : BaseConfig(
+ "boosters",
+ plugin,
+ false,
+ ConfigType.YAML
+)
diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/gui/BoosterGUI.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/gui/BoosterGUI.kt
index c0fe807..c430b25 100644
--- a/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/gui/BoosterGUI.kt
+++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/boosters/gui/BoosterGUI.kt
@@ -1,81 +1,81 @@
-package com.willfp.boosters.gui
-
-import com.willfp.boosters.BoostersPlugin
-import com.willfp.boosters.activateBooster
-import com.willfp.boosters.boosters.Booster
-import com.willfp.boosters.boosters.Boosters
-import com.willfp.eco.core.config.updating.ConfigUpdater
-import com.willfp.eco.core.gui.menu
-import com.willfp.eco.core.gui.menu.Menu
-import com.willfp.eco.core.gui.slot
-import com.willfp.eco.core.gui.slot.FillerMask
-import com.willfp.eco.core.gui.slot.MaskItems
-import com.willfp.eco.core.gui.slot.functional.SlotHandler
-import com.willfp.eco.util.tryAsPlayer
-import org.bukkit.Sound
-import org.bukkit.entity.Player
-
-object BoosterGUI {
- private lateinit var gui: Menu
-
- private fun makeHandler(booster: Booster, plugin: BoostersPlugin): SlotHandler {
- return SlotHandler { event, _, _ ->
- val player = event.whoClicked.tryAsPlayer() ?: return@SlotHandler
-
- if (booster.active != null) {
- player.sendMessage(plugin.langYml.getMessage("already-active"))
- player.playSound(
- player.location,
- Sound.BLOCK_NOTE_BLOCK_BASS,
- 1f,
- 0.5f
- )
- return@SlotHandler
- }
-
- if (!player.activateBooster(booster)) {
- player.sendMessage(plugin.langYml.getMessage("dont-have"))
- player.playSound(
- player.location,
- Sound.BLOCK_NOTE_BLOCK_BASS,
- 1f,
- 0.5f
- )
- return@SlotHandler
- }
-
- player.closeInventory()
- }
- }
-
- @JvmStatic
- @ConfigUpdater
- fun update(plugin: BoostersPlugin) {
- gui = menu(plugin.configYml.getInt("gui.rows")) {
- setMask(
- FillerMask(
- MaskItems.fromItemNames(plugin.configYml.getStrings("gui.mask.items")),
- *plugin.configYml.getStrings("gui.mask.pattern").toTypedArray()
- )
- )
-
- for (booster in Boosters.values()) {
- setSlot(
- booster.guiRow,
- booster.guiColumn,
- slot(
- { player, _ -> booster.getGuiItem(player) }
- ) {
- onLeftClick(makeHandler(booster, plugin))
- }
- )
- }
-
- setTitle(plugin.configYml.getFormattedString("gui.title"))
- }
- }
-
- fun open(player: Player) {
- gui.open(player)
- }
-}
+package com.willfp.boosters.gui
+
+import com.willfp.boosters.BoostersPlugin
+import com.willfp.boosters.activateBooster
+import com.willfp.boosters.boosters.Booster
+import com.willfp.boosters.boosters.Boosters
+import com.willfp.eco.core.config.updating.ConfigUpdater
+import com.willfp.eco.core.gui.menu
+import com.willfp.eco.core.gui.menu.Menu
+import com.willfp.eco.core.gui.slot
+import com.willfp.eco.core.gui.slot.FillerMask
+import com.willfp.eco.core.gui.slot.MaskItems
+import com.willfp.eco.core.gui.slot.functional.SlotHandler
+import com.willfp.eco.util.tryAsPlayer
+import org.bukkit.Sound
+import org.bukkit.entity.Player
+
+object BoosterGUI {
+ private lateinit var gui: Menu
+
+ private fun makeHandler(booster: Booster, plugin: BoostersPlugin): SlotHandler {
+ return SlotHandler { event, _, _ ->
+ val player = event.whoClicked.tryAsPlayer() ?: return@SlotHandler
+
+ if (booster.active != null) {
+ player.sendMessage(plugin.langYml.getMessage("already-active"))
+ player.playSound(
+ player.location,
+ Sound.BLOCK_NOTE_BLOCK_BASS,
+ 1f,
+ 0.5f
+ )
+ return@SlotHandler
+ }
+
+ if (!player.activateBooster(booster)) {
+ player.sendMessage(plugin.langYml.getMessage("dont-have"))
+ player.playSound(
+ player.location,
+ Sound.BLOCK_NOTE_BLOCK_BASS,
+ 1f,
+ 0.5f
+ )
+ return@SlotHandler
+ }
+
+ player.closeInventory()
+ }
+ }
+
+ @JvmStatic
+ @ConfigUpdater
+ fun update(plugin: BoostersPlugin) {
+ gui = menu(plugin.configYml.getInt("gui.rows")) {
+ setMask(
+ FillerMask(
+ MaskItems.fromItemNames(plugin.configYml.getStrings("gui.mask.items")),
+ *plugin.configYml.getStrings("gui.mask.pattern").toTypedArray()
+ )
+ )
+
+ for (booster in Boosters.values()) {
+ setSlot(
+ booster.guiRow,
+ booster.guiColumn,
+ slot(
+ { player, _ -> booster.getGuiItem(player) }
+ ) {
+ onLeftClick(makeHandler(booster, plugin))
+ }
+ )
+ }
+
+ setTitle(plugin.configYml.getFormattedString("gui.title"))
+ }
+ }
+
+ fun open(player: Player) {
+ gui.open(player)
+ }
+}
diff --git a/eco-core/core-plugin/src/main/resources/boosters.yml b/eco-core/core-plugin/src/main/resources/boosters.yml
index 66c075d..03466c7 100644
--- a/eco-core/core-plugin/src/main/resources/boosters.yml
+++ b/eco-core/core-plugin/src/main/resources/boosters.yml
@@ -1,124 +1,124 @@
-boosters:
- - id: 1_5sell_multiplier
- name: "1.5x Sell Multiplier"
- duration: 72000
- effects:
- - id: sell_multiplier
- args:
- multiplier: 1.5
- conditions: []
- commands:
- activation: []
- expiry: []
- messages:
- activation:
- - ""
- - " %player%&f has activated a &a1.5x Sell Multiplier Booster&f!"
- - " &fThis booster will last an hour, be sure to thank them!"
- - ""
- expiry:
- - ""
- - " &fThe &a1.5x Sell Multiplier Booster&f has ended"
- - " &fGet another one here: &ahttps://store.ecomc.net/package/756887"
- - ""
- gui:
- item: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTM0YjI3YmZjYzhmOWI5NjQ1OTRiNjE4YjExNDZhZjY5ZGUyNzhjZTVlMmUzMDEyY2I0NzFhOWEzY2YzODcxIn19fQ==
- name: "&d1.5x Sell Multiplier"
- lore:
- - ""
- - "&fGives everyone online a"
- - "&a1.5x Sell Multiplier"
- - "&fto make money faster!"
- - ""
- - "&fDuration: &a1 Hour"
- - ""
- - "&fYou have: &a%amount%"
- - "&fGet more at &astore.ecomc.net"
- - ""
- - "&e&oClick to activate!"
- - ""
- position:
- row: 2
- column: 2
- - id: 2sell_multiplier
- name: "2x Sell Multiplier"
- duration: 72000
- effects:
- - id: sell_multiplier
- args:
- multiplier: 2
- conditions: []
- commands:
- activation: []
- expiry: []
- messages:
- activation:
- - ""
- - " %player%&f has activated a &a2x Sell Multiplier Booster&f!"
- - " &fThis booster will last an hour, be sure to thank them!"
- - ""
- expiry:
- - ""
- - " &fThe &a2x Sell Multiplier Booster&f has ended"
- - " &fGet another one here: &ahttps://store.ecomc.net/package/756888"
- - ""
- gui:
- item: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBhN2I5NGM0ZTU4MWI2OTkxNTlkNDg4NDZlYzA5MTM5MjUwNjIzN2M4OWE5N2M5MzI0OGEwZDhhYmM5MTZkNSJ9fX0=
- name: "&d2x Sell Multiplier"
- lore:
- - ""
- - "&fGives everyone online a"
- - "&a2x Sell Multiplier"
- - "&fto make money faster!"
- - ""
- - "&fDuration: &a1 Hour"
- - ""
- - "&fYou have: &a%amount%"
- - "&fGet more at &astore.ecomc.net"
- - ""
- - "&e&oClick to activate!"
- - ""
- position:
- row: 2
- column: 5
- - id: skill_xp
- name: "2x Skill XP Multiplier"
- duration: 72000
- effects:
- - id: skill_xp_multiplier
- args:
- multiplier: 2
- conditions: []
- commands:
- activation: []
- expiry: []
- messages:
- activation:
- - ""
- - " %player%&f has activated a &a2x Skill XP Booster&f!"
- - " &fThis booster will last an hour, be sure to thank them!"
- - ""
- expiry:
- - ""
- - " &fThe &a2x Skill XP Booster&f has ended"
- - " &fGet another one here: &ahttps://store.ecomc.net/package/756893"
- - ""
- gui:
- item: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODkyNmMxZjJjM2MxNGQwODZjNDBjZmMyMzVmZTkzODY5NGY0YTUxMDY3YWRhNDcyNmI0ODZlYTFjODdiMDNlMiJ9fX0=
- name: "&d2x Skill XP Multiplier"
- lore:
- - ""
- - "&fGives everyone online a"
- - "&a2x Skill XP Multiplier"
- - "&fto level up faster!"
- - ""
- - "&fDuration: &a1 Hour"
- - ""
- - "&fYou have: &a%amount%"
- - "&fGet more at &astore.ecomc.net"
- - ""
- - "&e&oClick to activate!"
- - ""
- position:
- row: 2
- column: 8
+boosters:
+ - id: 1_5sell_multiplier
+ name: "1.5x Sell Multiplier"
+ duration: 72000
+ effects:
+ - id: sell_multiplier
+ args:
+ multiplier: 1.5
+ conditions: []
+ commands:
+ activation: []
+ expiry: []
+ messages:
+ activation:
+ - ""
+ - " %player%&f has activated a &a1.5x Sell Multiplier Booster&f!"
+ - " &fThis booster will last an hour, be sure to thank them!"
+ - ""
+ expiry:
+ - ""
+ - " &fThe &a1.5x Sell Multiplier Booster&f has ended"
+ - " &fGet another one here: &ahttps://store.ecomc.net/package/756887"
+ - ""
+ gui:
+ item: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTM0YjI3YmZjYzhmOWI5NjQ1OTRiNjE4YjExNDZhZjY5ZGUyNzhjZTVlMmUzMDEyY2I0NzFhOWEzY2YzODcxIn19fQ==
+ name: "&d1.5x Sell Multiplier"
+ lore:
+ - ""
+ - "&fGives everyone online a"
+ - "&a1.5x Sell Multiplier"
+ - "&fto make money faster!"
+ - ""
+ - "&fDuration: &a1 Hour"
+ - ""
+ - "&fYou have: &a%amount%"
+ - "&fGet more at &astore.ecomc.net"
+ - ""
+ - "&e&oClick to activate!"
+ - ""
+ position:
+ row: 2
+ column: 2
+ - id: 2sell_multiplier
+ name: "2x Sell Multiplier"
+ duration: 72000
+ effects:
+ - id: sell_multiplier
+ args:
+ multiplier: 2
+ conditions: []
+ commands:
+ activation: []
+ expiry: []
+ messages:
+ activation:
+ - ""
+ - " %player%&f has activated a &a2x Sell Multiplier Booster&f!"
+ - " &fThis booster will last an hour, be sure to thank them!"
+ - ""
+ expiry:
+ - ""
+ - " &fThe &a2x Sell Multiplier Booster&f has ended"
+ - " &fGet another one here: &ahttps://store.ecomc.net/package/756888"
+ - ""
+ gui:
+ item: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBhN2I5NGM0ZTU4MWI2OTkxNTlkNDg4NDZlYzA5MTM5MjUwNjIzN2M4OWE5N2M5MzI0OGEwZDhhYmM5MTZkNSJ9fX0=
+ name: "&d2x Sell Multiplier"
+ lore:
+ - ""
+ - "&fGives everyone online a"
+ - "&a2x Sell Multiplier"
+ - "&fto make money faster!"
+ - ""
+ - "&fDuration: &a1 Hour"
+ - ""
+ - "&fYou have: &a%amount%"
+ - "&fGet more at &astore.ecomc.net"
+ - ""
+ - "&e&oClick to activate!"
+ - ""
+ position:
+ row: 2
+ column: 5
+ - id: skill_xp
+ name: "2x Skill XP Multiplier"
+ duration: 72000
+ effects:
+ - id: skill_xp_multiplier
+ args:
+ multiplier: 2
+ conditions: []
+ commands:
+ activation: []
+ expiry: []
+ messages:
+ activation:
+ - ""
+ - " %player%&f has activated a &a2x Skill XP Booster&f!"
+ - " &fThis booster will last an hour, be sure to thank them!"
+ - ""
+ expiry:
+ - ""
+ - " &fThe &a2x Skill XP Booster&f has ended"
+ - " &fGet another one here: &ahttps://store.ecomc.net/package/756893"
+ - ""
+ gui:
+ item: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODkyNmMxZjJjM2MxNGQwODZjNDBjZmMyMzVmZTkzODY5NGY0YTUxMDY3YWRhNDcyNmI0ODZlYTFjODdiMDNlMiJ9fX0=
+ name: "&d2x Skill XP Multiplier"
+ lore:
+ - ""
+ - "&fGives everyone online a"
+ - "&a2x Skill XP Multiplier"
+ - "&fto level up faster!"
+ - ""
+ - "&fDuration: &a1 Hour"
+ - ""
+ - "&fYou have: &a%amount%"
+ - "&fGet more at &astore.ecomc.net"
+ - ""
+ - "&e&oClick to activate!"
+ - ""
+ position:
+ row: 2
+ column: 8
diff --git a/eco-core/core-plugin/src/main/resources/config.yml b/eco-core/core-plugin/src/main/resources/config.yml
index d422235..ed79bc0 100644
--- a/eco-core/core-plugin/src/main/resources/config.yml
+++ b/eco-core/core-plugin/src/main/resources/config.yml
@@ -1,54 +1,54 @@
-#
-# Boosters
-# by Auxilor
-#
-
-gui:
- title: Boosters
- rows: 3
- mask:
- items:
- - black_stained_glass_Pane
- pattern:
- - "111111111"
- - "101101101"
- - "111111111"
-
-cooldown:
- in-actionbar: true
- sound:
- enabled: true
- sound: "BLOCK_NOTE_BLOCK_PLING"
- pitch: 0.5
-
-cannot-afford:
- in-actionbar: true
- sound:
- enabled: true
- sound: "BLOCK_NOTE_BLOCK_PLING"
- pitch: 0.5
-
-cannot-afford-type:
- in-actionbar: true
- sound:
- enabled: true
- sound: "BLOCK_NOTE_BLOCK_PLING"
- pitch: 0.5
-
-point-names: # If you have point names that look ugly (eg g_souls) then you can map them to nice names to be shown to players.
- example_point: "Nicely Formatted Point"
-
-use-faster-move-trigger: true # Disable if you want move trigger to detect sub-1-block movements
-raytrace-distance: 80 # The distance that alt_click should check for a location
-block-item-drop-place-check: true # If the block_item_drop trigger should only fire on naturally placed blocks (prevents dupes)
-
-potions:
- icon:
- permanent: true
- triggered: true
- ambient:
- permanent: false
- triggered: true
- particles:
- permanent: false
- triggered: true
+#
+# Boosters
+# by Auxilor
+#
+
+gui:
+ title: Boosters
+ rows: 3
+ mask:
+ items:
+ - black_stained_glass_Pane
+ pattern:
+ - "111111111"
+ - "101101101"
+ - "111111111"
+
+cooldown:
+ in-actionbar: true
+ sound:
+ enabled: true
+ sound: "BLOCK_NOTE_BLOCK_PLING"
+ pitch: 0.5
+
+cannot-afford:
+ in-actionbar: true
+ sound:
+ enabled: true
+ sound: "BLOCK_NOTE_BLOCK_PLING"
+ pitch: 0.5
+
+cannot-afford-type:
+ in-actionbar: true
+ sound:
+ enabled: true
+ sound: "BLOCK_NOTE_BLOCK_PLING"
+ pitch: 0.5
+
+point-names: # If you have point names that look ugly (eg g_souls) then you can map them to nice names to be shown to players.
+ example_point: "Nicely Formatted Point"
+
+use-faster-move-trigger: true # Disable if you want move trigger to detect sub-1-block movements
+raytrace-distance: 80 # The distance that alt_click should check for a location
+block-item-drop-place-check: true # If the block_item_drop trigger should only fire on naturally placed blocks (prevents dupes)
+
+potions:
+ icon:
+ permanent: true
+ triggered: true
+ ambient:
+ permanent: false
+ triggered: true
+ particles:
+ permanent: false
+ triggered: true
diff --git a/eco-core/core-plugin/src/main/resources/eco.yml b/eco-core/core-plugin/src/main/resources/eco.yml
index 8a1a25f..cdf6a84 100644
--- a/eco-core/core-plugin/src/main/resources/eco.yml
+++ b/eco-core/core-plugin/src/main/resources/eco.yml
@@ -1,3 +1,3 @@
-resource-id: 2036
-bstats-id: 14269
-color: "&e"
+resource-id: 2036
+bstats-id: 14269
+color: "&e"
diff --git a/eco-core/core-plugin/src/main/resources/lang.yml b/eco-core/core-plugin/src/main/resources/lang.yml
index 6af7acf..868c958 100644
--- a/eco-core/core-plugin/src/main/resources/lang.yml
+++ b/eco-core/core-plugin/src/main/resources/lang.yml
@@ -1,21 +1,21 @@
-messages:
- prefix: "&a&lBoosters&r &8» &r"
- no-permission: "&cYou don't have permission to do this!"
- not-player: "&cThis command must be run by a player"
- invalid-command: "&cUnknown subcommand!"
- reloaded: "Reloaded!"
- requires-player: "&cYou must specify a player!"
- invalid-player: "&cInvalid player!"
- requires-booster: "&cYou must specify a booster!"
- invalid-booster: "&cInvalid booster!"
- gave-booster: "Gave %player% %booster% &fx%amount%!"
- already-active: "&cThis booster is already active!"
- dont-have: "&cYou don't have any of these boosters! Get some at &astore.ecomc.net"
- on-cooldown: "&cThis effect is on cooldown! &fTime left: &a%seconds% seconds"
- cannot-afford: "&cYou can't afford to do this! &fCost: &a$$%cost%"
- cannot-afford-type: "&cYou can't afford to do this! &fCost: &a%cost% %type%"
- cancelled: "Cancelled the active boosters"
- cannot-transmit: "&cYou can't transmit here!"
-
-no-currently-active: "&cNot Active!"
-active-placeholder: "&fThanks %player% &ffor activating %booster%&f!"
+messages:
+ prefix: "&a&lBoosters&r &8» &r"
+ no-permission: "&cYou don't have permission to do this!"
+ not-player: "&cThis command must be run by a player"
+ invalid-command: "&cUnknown subcommand!"
+ reloaded: "Reloaded!"
+ requires-player: "&cYou must specify a player!"
+ invalid-player: "&cInvalid player!"
+ requires-booster: "&cYou must specify a booster!"
+ invalid-booster: "&cInvalid booster!"
+ gave-booster: "Gave %player% %booster% &fx%amount%!"
+ already-active: "&cThis booster is already active!"
+ dont-have: "&cYou don't have any of these boosters! Get some at &astore.ecomc.net"
+ on-cooldown: "&cThis effect is on cooldown! &fTime left: &a%seconds% seconds"
+ cannot-afford: "&cYou can't afford to do this! &fCost: &a$$%cost%"
+ cannot-afford-type: "&cYou can't afford to do this! &fCost: &a%cost% %type%"
+ cancelled: "Cancelled the active boosters"
+ cannot-transmit: "&cYou can't transmit here!"
+
+no-currently-active: "&cNot Active!"
+active-placeholder: "&fThanks %player% &ffor activating %booster%&f!"
diff --git a/eco-core/core-plugin/src/main/resources/plugin.yml b/eco-core/core-plugin/src/main/resources/plugin.yml
index 8675713..5429b82 100644
--- a/eco-core/core-plugin/src/main/resources/plugin.yml
+++ b/eco-core/core-plugin/src/main/resources/plugin.yml
@@ -1,57 +1,57 @@
-name: Boosters
-version: ${projectVersion}
-main: com.willfp.boosters.BoostersPlugin
-api-version: 1.17
-authors: [ Auxilor ]
-website: willfp.com
-load: POSTWORLD
-depend:
- - eco
- - PlaceholderAPI
-softdepend:
- - EcoSkills
- - AureliumSkills
- - Jobs
- - mcMMO
- - Vault
- - EcoArmor
- - TMMobcoins
-
-commands:
- boosters:
- description: Base Command
- permission: boosters.command.boosters
- aliases:
- - boost
-
-permissions:
- boosters.*:
- description: All boosters permissions
- default: op
- children:
- boosters.command.*: true
- boosters.command.*:
- description: All commands
- default: op
- children:
- boosters.command.reload: true
- boosters.command.give: true
- boosters.command.boosters: true
- boosters.command.cancel: true
- boosters.command.activate: true
-
- boosters.command.reload:
- description: Allows reloading the config
- default: op
- boosters.command.boosters:
- description: Allows the use of /boosters.
- default: true
- boosters.command.give:
- description: Allows the use of /boosters give.
- default: op
- boosters.command.activate:
- description: Allows the use of /boosters activate.
- default: op
- boosters.command.cancel:
- description: Allows the use of /boosters cancel.
+name: Boosters
+version: ${projectVersion}
+main: com.willfp.boosters.BoostersPlugin
+api-version: 1.17
+authors: [ Auxilor ]
+website: willfp.com
+load: POSTWORLD
+depend:
+ - eco
+ - PlaceholderAPI
+softdepend:
+ - EcoSkills
+ - AureliumSkills
+ - Jobs
+ - mcMMO
+ - Vault
+ - EcoArmor
+ - TMMobcoins
+
+commands:
+ boosters:
+ description: Base Command
+ permission: boosters.command.boosters
+ aliases:
+ - boost
+
+permissions:
+ boosters.*:
+ description: All boosters permissions
+ default: op
+ children:
+ boosters.command.*: true
+ boosters.command.*:
+ description: All commands
+ default: op
+ children:
+ boosters.command.reload: true
+ boosters.command.give: true
+ boosters.command.boosters: true
+ boosters.command.cancel: true
+ boosters.command.activate: true
+
+ boosters.command.reload:
+ description: Allows reloading the config
+ default: op
+ boosters.command.boosters:
+ description: Allows the use of /boosters.
+ default: true
+ boosters.command.give:
+ description: Allows the use of /boosters give.
+ default: op
+ boosters.command.activate:
+ description: Allows the use of /boosters activate.
+ default: op
+ boosters.command.cancel:
+ description: Allows the use of /boosters cancel.
default: op
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 0cc60bc..298d446 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
#libreforge-updater
-#Mon May 16 13:04:37 BST 2022
-version=4.6.3
+#Mon May 16 13:08:11 BST 2022
+version=4.6.4
plugin-name=Boosters
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index ffed3a2..692a5d6 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index c53aefa..a7fd78c 100755
--- a/gradlew
+++ b/gradlew
@@ -1,234 +1,234 @@
-#!/bin/sh
-
-#
-# Copyright © 2015-2021 the original authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-##############################################################################
-#
-# Gradle start up script for POSIX generated by Gradle.
-#
-# Important for running:
-#
-# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
-# noncompliant, but you have some other compliant shell such as ksh or
-# bash, then to run this script, type that shell name before the whole
-# command line, like:
-#
-# ksh Gradle
-#
-# Busybox and similar reduced shells will NOT work, because this script
-# requires all of these POSIX shell features:
-# * functions;
-# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
-# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
-# * compound commands having a testable exit status, especially «case»;
-# * various built-in commands including «command», «set», and «ulimit».
-#
-# Important for patching:
-#
-# (2) This script targets any POSIX shell, so it avoids extensions provided
-# by Bash, Ksh, etc; in particular arrays are avoided.
-#
-# The "traditional" practice of packing multiple parameters into a
-# space-separated string is a well documented source of bugs and security
-# problems, so this is (mostly) avoided, by progressively accumulating
-# options in "$@", and eventually passing that to Java.
-#
-# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
-# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
-# see the in-line comments for details.
-#
-# There are tweaks for specific operating systems such as AIX, CygWin,
-# Darwin, MinGW, and NonStop.
-#
-# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
-# within the Gradle project.
-#
-# You can find Gradle at https://github.com/gradle/gradle/.
-#
-##############################################################################
-
-# Attempt to set APP_HOME
-
-# Resolve links: $0 may be a link
-app_path=$0
-
-# Need this for daisy-chained symlinks.
-while
- APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
- [ -h "$app_path" ]
-do
- ls=$( ls -ld "$app_path" )
- link=${ls#*' -> '}
- case $link in #(
- /*) app_path=$link ;; #(
- *) app_path=$APP_HOME$link ;;
- esac
-done
-
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
-APP_BASE_NAME=${0##*/}
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD=maximum
-
-warn () {
- echo "$*"
-} >&2
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-} >&2
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "$( uname )" in #(
- CYGWIN* ) cygwin=true ;; #(
- Darwin* ) darwin=true ;; #(
- MSYS* | MINGW* ) msys=true ;; #(
- NONSTOP* ) nonstop=true ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD=$JAVA_HOME/jre/sh/java
- else
- JAVACMD=$JAVA_HOME/bin/java
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD=java
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
- case $MAX_FD in #(
- max*)
- MAX_FD=$( ulimit -H -n ) ||
- warn "Could not query maximum file descriptor limit"
- esac
- case $MAX_FD in #(
- '' | soft) :;; #(
- *)
- ulimit -n "$MAX_FD" ||
- warn "Could not set maximum file descriptor limit to $MAX_FD"
- esac
-fi
-
-# Collect all arguments for the java command, stacking in reverse order:
-# * args from the command line
-# * the main class name
-# * -classpath
-# * -D...appname settings
-# * --module-path (only if needed)
-# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if "$cygwin" || "$msys" ; then
- APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
-
- JAVACMD=$( cygpath --unix "$JAVACMD" )
-
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- for arg do
- if
- case $arg in #(
- -*) false ;; # don't mess with options #(
- /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
- [ -e "$t" ] ;; #(
- *) false ;;
- esac
- then
- arg=$( cygpath --path --ignore --mixed "$arg" )
- fi
- # Roll the args list around exactly as many times as the number of
- # args, so each arg winds up back in the position where it started, but
- # possibly modified.
- #
- # NB: a `for` loop captures its iteration list before it begins, so
- # changing the positional parameters here affects neither the number of
- # iterations, nor the values presented in `arg`.
- shift # remove old arg
- set -- "$@" "$arg" # push replacement arg
- done
-fi
-
-# Collect all arguments for the java command;
-# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-# shell script including quotes and variable substitutions, so put them in
-# double quotes to make sure that they get re-expanded; and
-# * put everything else in single quotes, so that it's not re-expanded.
-
-set -- \
- "-Dorg.gradle.appname=$APP_BASE_NAME" \
- -classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
- "$@"
-
-# Use "xargs" to parse quoted args.
-#
-# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
-#
-# In Bash we could simply go:
-#
-# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
-# set -- "${ARGS[@]}" "$@"
-#
-# but POSIX shell has neither arrays nor command substitution, so instead we
-# post-process each arg (as a line of input to sed) to backslash-escape any
-# character that might be a shell metacharacter, then use eval to reverse
-# that process (while maintaining the separation between arguments), and wrap
-# the whole thing up as a single "set" statement.
-#
-# This will of course break if any of these variables contains a newline or
-# an unmatched quote.
-#
-
-eval "set -- $(
- printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
- xargs -n1 |
- sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
- tr '\n' ' '
- )" '"$@"'
-
-exec "$JAVACMD" "$@"
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
+##############################################################################
+
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
+
+APP_NAME="Gradle"
+APP_BASE_NAME=${0##*/}
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD=maximum
+
+warn () {
+ echo "$*"
+} >&2
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+} >&2
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD=$JAVA_HOME/jre/sh/java
+ else
+ JAVACMD=$JAVA_HOME/bin/java
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD=java
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
+fi
+
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index 107acd3..ac1b06f 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,89 +1,89 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/jitpack.yml b/jitpack.yml
index 996a9f0..0942e31 100644
--- a/jitpack.yml
+++ b/jitpack.yml
@@ -1,6 +1,6 @@
-jdk: openjdk16
-before_install:
- - source "$HOME/.sdkman/bin/sdkman-init.sh"
- - sdk update
- - sdk install java 16.0.1-open
+jdk: openjdk16
+before_install:
+ - source "$HOME/.sdkman/bin/sdkman-init.sh"
+ - sdk update
+ - sdk install java 16.0.1-open
- sdk use java 16.0.1-open
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index d48ee84..e42d065 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,5 +1,5 @@
-rootProject.name = 'Boosters'
-
-// Core
-include ':eco-core'
+rootProject.name = 'Boosters'
+
+// Core
+include ':eco-core'
include ':eco-core:core-plugin'
\ No newline at end of file