diff --git a/build.gradle.kts b/build.gradle.kts index e672c4f..5dc109b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,6 +23,7 @@ allprojects { maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") maven("https://oss.sonatype.org/content/repositories/snapshots") maven("https://jitpack.io") + maven("https://libraries.minecraft.net") } defaultDependencies() diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 25ef28b..b48c43a 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -18,4 +18,6 @@ object Versions { const val exposedGradlePlugin = "0.2.1" const val jacoco = "0.8.7" const val sqlite = "3.30.1" + const val commodore = "2.2" + const val brigadier = "1.0.18" } diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 201cea1..31c245a 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -28,6 +28,8 @@ dependencies { // Spigot doesn't have this dependency implementation("org.slf4j:slf4j-api:${Versions.slf4j}") implementation("org.slf4j:slf4j-simple:${Versions.slf4j}") + implementation("me.lucko:commodore:${Versions.commodore}") + compileOnly("com.mojang:brigadier:${Versions.brigadier}") // Plugin dependency if (buildVersion == null) { @@ -81,8 +83,15 @@ tasks.shadowJar { relocate("org.slf4j", "fr.fabienhebuterne.marketplace.libs.org.slf4j") relocate("com.google", "fr.fabienhebuterne.marketplace.libs.com.google") + // relocate mc libs + relocate("me.lucko.commodore", "fr.fabienhebuterne.marketplace.libs.commodore") + exclude("DebugProbesKt.bin") exclude("module-info.class") + + dependencies { + exclude(dependency("com.mojang:brigadier")) + } } tasks.build { diff --git a/common/src/main/kotlin/fr/fabienhebuterne/marketplace/MarketPlace.kt b/common/src/main/kotlin/fr/fabienhebuterne/marketplace/MarketPlace.kt index df29f26..cdeee19 100644 --- a/common/src/main/kotlin/fr/fabienhebuterne/marketplace/MarketPlace.kt +++ b/common/src/main/kotlin/fr/fabienhebuterne/marketplace/MarketPlace.kt @@ -25,6 +25,8 @@ import fr.fabienhebuterne.marketplace.storage.LogsRepository import fr.fabienhebuterne.marketplace.storage.MailsRepository import fr.fabienhebuterne.marketplace.storage.mysql.* import fr.fabienhebuterne.marketplace.utils.BootstrapLoader +import fr.fabienhebuterne.marketplace.utils.CommodoreService +import me.lucko.commodore.CommodoreProvider import net.milkbowl.vault.economy.Economy import org.bukkit.Bukkit import org.bukkit.command.Command @@ -49,6 +51,7 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import java.time.Clock + // Used only to include slf4j for spigot and include with gradle shadowJar minimize() var logger: Logger = LoggerFactory.getLogger(MarketPlace::class.java) @@ -140,6 +143,11 @@ class MarketPlace(override var loader: JavaPlugin) : BootstrapLoader { val expirationService: ExpirationService by kodein.instance() expirationService.startTaskExpiration() + if (CommodoreProvider.isSupported()) { + val marketPlaceCommand = this.loader.getCommand("marketplace") + CommodoreService().init(this.loader, marketPlaceCommand) + } + isReload = false } diff --git a/common/src/main/kotlin/fr/fabienhebuterne/marketplace/utils/CommodoreService.kt b/common/src/main/kotlin/fr/fabienhebuterne/marketplace/utils/CommodoreService.kt new file mode 100644 index 0000000..44c3c75 --- /dev/null +++ b/common/src/main/kotlin/fr/fabienhebuterne/marketplace/utils/CommodoreService.kt @@ -0,0 +1,19 @@ +package fr.fabienhebuterne.marketplace.utils + +import com.mojang.brigadier.tree.LiteralCommandNode +import me.lucko.commodore.Commodore +import me.lucko.commodore.CommodoreProvider +import me.lucko.commodore.file.CommodoreFileReader +import org.bukkit.command.Command +import org.bukkit.plugin.java.JavaPlugin + +class CommodoreService { + + fun init(plugin: JavaPlugin, command: Command) { + val commodore: Commodore = CommodoreProvider.getCommodore(plugin) + val marketPlaceCommand: LiteralCommandNode = + CommodoreFileReader.INSTANCE.parse(plugin.getResource("marketplace.commodore")) + commodore.register(command, marketPlaceCommand) + } + +} \ No newline at end of file diff --git a/common/src/main/resources/.gitkeep b/common/src/main/resources/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/common/src/main/resources/marketplace.commodore b/common/src/main/resources/marketplace.commodore new file mode 100644 index 0000000..b7718d5 --- /dev/null +++ b/common/src/main/resources/marketplace.commodore @@ -0,0 +1,16 @@ +marketplace { + add { + unit_price brigadier:double; + } + listings { + player_or_uuid brigadier:string single_word; + } + mails { + player_or_uuid brigadier:string single_word; + } + logs { + player_or_uuid brigadier:string single_word; + } + reload; + help; +} \ No newline at end of file