Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import io.papermc.hangarpublishplugin.internal.util.capitalized
plugins {
id("java")
id("idea")
id("org.jetbrains.kotlin.jvm") version "2.2.0"
id("com.gradleup.shadow") version "8.3.6"
id("dev.s7a.gradle.minecraft.server") version "3.2.1"
id("com.google.devtools.ksp") version "2.2.0-2.0.2"
id("io.gitlab.arturbosch.detekt") version "1.23.8"
id("org.jetbrains.kotlin.jvm") version "2.3.0"
id("com.gradleup.shadow") version "9.4.1"
id("dev.s7a.gradle.minecraft.server") version "4.0.2"
id("io.insert-koin.compiler.plugin") version "1.0.0-RC1"
id("dev.detekt") version "2.0.0-alpha.2"
id("io.papermc.hangar-publish-plugin") version "0.1.3"
id("com.modrinth.minotaur") version "2.8.7"
id("org.flywaydb.flyway") version "11.10.5"
Expand All @@ -27,7 +27,11 @@ repositories {
}

java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
toolchain.languageVersion.set(JavaLanguageVersion.of(25))
}

kotlin {
jvmToolchain(25)
}

val kotlinVersion: String by project
Expand All @@ -45,20 +49,20 @@ buildscript {
}

dependencies {
compileOnly("io.papermc.paper:paper-api:$buildPaperVersion-R0.1-SNAPSHOT")
compileOnly("io.papermc.paper:paper-api:$buildPaperVersion.build.+")
implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
implementation("io.insert-koin:koin-core:$koinVersion")
implementation("io.insert-koin:koin-annotations:$koinVersion")

implementation("org.bstats:bstats-bukkit:$bstatsVersion")
shadow("io.arrow-kt:arrow-core:$arrowVersion")
// Database dependencies
shadow("org.flywaydb:flyway-core:$flywayVersion")
shadow("org.xerial:sqlite-jdbc:$sqliteVersion")
shadow("com.mysql:mysql-connector-j:$mysqlVersion")

api("io.insert-koin:koin-annotations:2.0.1-RC1")
ksp("io.insert-koin:koin-ksp-compiler:2.0.1-RC1")

detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.23.8")
detektPlugins("dev.detekt:detekt-rules-ktlint-wrapper:2.0.0-alpha.2")

testImplementation("io.mockk:mockk:1.14.2")
testImplementation("io.kotest:kotest-runner-junit5:5.9.1")
Expand Down Expand Up @@ -148,6 +152,7 @@ tasks.build {
}

tasks.register("buildPlugin") {
notCompatibleWithConfigurationCache("Do not cache artifacts")
dependsOn("shadowJar")

doFirst {
Expand All @@ -166,6 +171,7 @@ detekt {
}

tasks.register<LaunchMinecraftServerTask>("testPlugin") {
notCompatibleWithConfigurationCache("Do not cache artifacts")
dependsOn("buildPlugin")
jarUrl.set(LaunchMinecraftServerTask.JarUrl.Paper(buildPaperVersion))
agreeEula.set(true)
Expand Down
35 changes: 19 additions & 16 deletions config/detekt.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
complexity:
LongParameterList:
constructorThreshold: 25
functionThreshold: 10
allowedConstructorParameters: 25
allowedFunctionParameters: 10
TooManyFunctions:
ignorePrivate: true
CognitiveComplexMethod:
Expand All @@ -23,28 +23,31 @@ potential-bugs:
active: true
empty-blocks:
active: true
formatting:
FinalNewline:
autoCorrect: true
SpacingAroundColon:
autoCorrect: true
NoConsecutiveBlankLines:
autoCorrect: true
NoMultipleSpaces:
autoCorrect: true
NoUnusedImports:
active: true
autoCorrect: true
ktlint:
active: false
# Wrapping:
# active: false
# FinalNewline:
# autoCorrect: true
# SpacingAroundColon:
# autoCorrect: true
# NoConsecutiveBlankLines:
# autoCorrect: true
# NoMultipleSpaces:
# autoCorrect: true
# NoUnusedImports:
# active: true
# autoCorrect: true
style:
MagicNumber:
active: false
ReturnCount:
active: false
UnusedImports:
UnusedImport:
active: true
UnusedPrivateClass:
active: true
UnusedPrivateMember:
UnusedPrivateProperty:
active: true
OptionalUnit:
active: true
Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ version=2.1.4
# x-release-please-end

bstatsVersion=3.1.0
buildPaperVersion=1.21.11
pluginApiVersion=1.21
paperVersions=1.21.11
buildPaperVersion=26.1.2
pluginApiVersion=26.1
paperVersions=26.1
pluginWebsite=https://github.com/AtriusX/Waystones
kotlinVersion=2.2.0
koinVersion=4.1.0-RC1
kotlinVersion=2.3.0
koinVersion=4.2.1
arrowVersion=2.1.2
flywayVersion=11.10.5
sqliteVersion=3.50.3.0
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
1 change: 1 addition & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
}
}
Expand Down
38 changes: 28 additions & 10 deletions src/main/kotlin/xyz/atrius/waystones/Waystones.kt
Original file line number Diff line number Diff line change
@@ -1,21 +1,39 @@
package xyz.atrius.waystones

import org.koin.core.Koin
import org.koin.ksp.generated.module
import org.koin.core.annotation.KoinApplication
import org.koin.dsl.module
import org.koin.plugin.module.dsl.startKoin
import xyz.atrius.waystones.config.DatabaseModule
import xyz.atrius.waystones.config.WaystonesModule
import xyz.atrius.waystones.internal.KotlinPlugin
import xyz.atrius.waystones.internal.PluginEntrypoint

@KoinApplication(modules = [WaystonesModule::class, DatabaseModule::class])
class WaystonesKoinApp

typealias KoinApp =
org.koin.core.KoinApplication

@PluginEntrypoint
class Waystones : KotlinPlugin(
WaystonesModule.module,
DatabaseModule.module,
) {
class Waystones : KotlinPlugin() {

private lateinit var koin: KoinApp

private fun defaultModule() = module {
single<KotlinPlugin> { this@Waystones }
}

override fun onEnable() {
config.options().copyDefaults(true)
saveConfig()

override fun enable(koin: Koin) =
enablePlugin<WaystonesInitializer>(koin)
koin = startKoin<WaystonesKoinApp> {
modules(defaultModule())
}
koin.koin.get<WaystonesInitializer>().enable(this)
}

override fun disable(koin: Koin) =
disablePlugin<WaystonesInitializer>(koin)
override fun onDisable() {
koin.koin.get<WaystonesInitializer>().disable(this)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.koin.core.annotation.Single
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

@Single
@Single(binds = [AdvancementProvider::class])
class BlockedAdvancement(
localization: LocalizationManager,
secretTunnelAdvancement: SecretTunnelAdvancement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import xyz.atrius.waystones.data.json.advancement.AdvancementType
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

@Single
@Single(binds = [AdvancementProvider::class])
class CleanEnergyAdvancement(
localization: LocalizationManager,
heavyArtilleryAdvancement: HeavyArtilleryAdvancement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import xyz.atrius.waystones.data.json.advancement.AdvancementType
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

@Single
@Single(binds = [AdvancementProvider::class])
class GigawarpsAdvancement(
localization: LocalizationManager,
cleanEnergyAdvancement: CleanEnergyAdvancement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import xyz.atrius.waystones.data.json.advancement.AdvancementType
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

@Single
@Single(binds = [AdvancementProvider::class])
class HeavyArtilleryAdvancement(
localization: LocalizationManager,
secretTunnelAdvancement: SecretTunnelAdvancement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import org.bukkit.Material
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

// @Single Disabled until the advancement is useful
// @Single(binds = [AdvancementProvider::class]) Disabled until the advancement is useful
class HowLowCanYouGoAdvancement(
localization: LocalizationManager,
secretTunnelAdvancement: SecretTunnelAdvancement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.koin.core.annotation.Single
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

@Single
@Single(binds = [AdvancementProvider::class])
class IDontFeelSoGoodAdvancement(
localization: LocalizationManager,
secretTunnelAdvancement: SecretTunnelAdvancement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.koin.core.annotation.Single
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

@Single
@Single(binds = [AdvancementProvider::class])
class QuantumDomesticationAdvancement(
localization: LocalizationManager,
secretTunnelAdvancement: SecretTunnelAdvancement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.koin.core.annotation.Single
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

@Single
@Single(binds = [AdvancementProvider::class])
class SecretTunnelAdvancement(
localization: LocalizationManager,
waystonesAdvancement: WaystonesAdvancement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import xyz.atrius.waystones.data.json.advancement.AdvancementType
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

@Single
@Single(binds = [AdvancementProvider::class])
class ShootTheMessengerAdvancement(
localization: LocalizationManager,
unlimitedPowerAdvancement: UnlimitedPowerAdvancement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import xyz.atrius.waystones.data.json.advancement.AdvancementType
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

@Single
@Single(binds = [AdvancementProvider::class])
class UnlimitedPowerAdvancement(
localization: LocalizationManager,
heavyArtilleryAdvancement: HeavyArtilleryAdvancement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.koin.core.annotation.Single
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.provider.AdvancementProvider

@Single
@Single(binds = [AdvancementProvider::class])
class WaystonesAdvancement(
localization: LocalizationManager,
) : AdvancementProvider(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package xyz.atrius.waystones.animation
import org.bukkit.Bukkit
import org.bukkit.Location
import org.bukkit.entity.Player
import org.koin.core.annotation.Provided
import org.koin.core.annotation.Single
import xyz.atrius.waystones.animation.effect.TeleportEffect
import xyz.atrius.waystones.data.config.property.WaitTimeProperty
Expand All @@ -12,7 +13,7 @@ import xyz.atrius.waystones.utility.scheduleRepeatingAutoCancelTask
@Single
class AnimationManager(
private val waitTime: WaitTimeProperty,
private val plugin: KotlinPlugin,
@Provided private val plugin: KotlinPlugin,
) {

private val scheduler = Bukkit.getScheduler()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ import com.mojang.brigadier.Command
import com.mojang.brigadier.builder.ArgumentBuilder
import io.papermc.paper.command.brigadier.CommandSourceStack
import org.bukkit.entity.Player
import org.koin.core.annotation.Provided
import org.koin.core.annotation.Single
import xyz.atrius.waystones.internal.KotlinPlugin
import xyz.atrius.waystones.manager.LocalizationManager
import xyz.atrius.waystones.utility.translateColors

@Single
class InfoCommand(
plugin: KotlinPlugin,
@Provided plugin: KotlinPlugin,
private val localization: LocalizationManager,
) : WaystoneSubcommand {

Expand Down
7 changes: 4 additions & 3 deletions src/main/kotlin/xyz/atrius/waystones/config/DatabaseModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import org.bstats.bukkit.Metrics
import org.bstats.charts.SimplePie
import org.flywaydb.core.Flyway
import org.koin.core.annotation.Module
import org.koin.core.annotation.Provided
import org.koin.core.annotation.Single
import org.slf4j.LoggerFactory
import xyz.atrius.waystones.internal.KotlinPlugin
Expand All @@ -14,8 +15,8 @@ object DatabaseModule {

@Single
fun getDatabaseConfiguration(
plugin: KotlinPlugin,
metrics: Metrics,
@Provided plugin: KotlinPlugin,
@Provided metrics: Metrics,
): DatabaseProperties {
logger.info("Attempting to load database configuration...")

Expand Down Expand Up @@ -47,7 +48,7 @@ object DatabaseModule {

@Single
fun configureFlyway(
plugin: KotlinPlugin,
@Provided plugin: KotlinPlugin,
props: DatabaseProperties,
): Flyway = Flyway
.configure(this::class.java.classLoader)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package xyz.atrius.waystones.config

import org.koin.core.annotation.Provided
import xyz.atrius.waystones.internal.KotlinPlugin

enum class SupportedDatabase(
Expand All @@ -21,7 +22,7 @@ data class DatabaseProperties(
val databaseName: String? = null,
) {

fun getHostUrl(plugin: KotlinPlugin): String {
fun getHostUrl(@Provided plugin: KotlinPlugin): String {
// We should configure flyway to pull migrations from the correct database directory
val url = when (type) {
SupportedDatabase.SQLITE -> plugin.dataFolder.resolve("waystones.db")
Expand Down
Loading
Loading