From be8bf64eac13c0787cb4b6281898bf5ce91b6fed Mon Sep 17 00:00:00 2001 From: rafal <63915083+rchomczyk@users.noreply.github.com> Date: Sat, 16 Nov 2024 18:12:49 +0100 Subject: [PATCH 1/8] Add module for kotlin extension --- .idea/gradle.xml | 1 + .idea/kotlinc.xml | 2 +- buildSrc/src/main/kotlin/honey-kotlin.gradle.kts | 14 ++++++++++++++ honey-kt-extension/build.gradle.kts | 14 ++++++++++++++ .../src/dev/shiza/honey/dispatcher.kt | 4 ++++ settings.gradle.kts | 4 +++- 6 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 buildSrc/src/main/kotlin/honey-kotlin.gradle.kts create mode 100644 honey-kt-extension/build.gradle.kts create mode 100644 honey-kt-extension/src/dev/shiza/honey/dispatcher.kt diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 10d2912..bb8d63b 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -22,6 +22,7 @@ diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index 148fdd2..c224ad5 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/honey-kotlin.gradle.kts b/buildSrc/src/main/kotlin/honey-kotlin.gradle.kts new file mode 100644 index 0000000..699d6ce --- /dev/null +++ b/buildSrc/src/main/kotlin/honey-kotlin.gradle.kts @@ -0,0 +1,14 @@ +plugins { + `java-library` +} + +sourceSets { + main { + java.setSrcDirs(listOf("src")) + resources.setSrcDirs(emptyList()) + } + test { + java.setSrcDirs(emptyList()) + resources.setSrcDirs(emptyList()) + } +} \ No newline at end of file diff --git a/honey-kt-extension/build.gradle.kts b/honey-kt-extension/build.gradle.kts new file mode 100644 index 0000000..0c31ee9 --- /dev/null +++ b/honey-kt-extension/build.gradle.kts @@ -0,0 +1,14 @@ +plugins { + `honey-kotlin` + `honey-publish` + `honey-repositories` + kotlin("jvm") version "2.0.21" +} + +honeyPublish { + artifactId = "honey-kt-extension" +} + +kotlin { + jvmToolchain(17) +} \ No newline at end of file diff --git a/honey-kt-extension/src/dev/shiza/honey/dispatcher.kt b/honey-kt-extension/src/dev/shiza/honey/dispatcher.kt new file mode 100644 index 0000000..86c2a12 --- /dev/null +++ b/honey-kt-extension/src/dev/shiza/honey/dispatcher.kt @@ -0,0 +1,4 @@ +package dev.shiza.honey + +class dispatcher { +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 97ac85a..6818302 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,6 @@ rootProject.name = "honey" include(":honey-common") +include(":honey-kt-extension") + // Uncomment in case if you would like to run test plugin -include(":honey-test-plugin") +// include(":honey-test-plugin") \ No newline at end of file From 62596bf0a17d6dd39cd4e0869403aa4ac8ea3466 Mon Sep 17 00:00:00 2001 From: Damian Date: Sat, 16 Nov 2024 19:25:40 +0100 Subject: [PATCH 2/8] Add kotlin extension (1) --- .../src/dev/shiza/honey/title.kt | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 honey-kt-extension/src/dev/shiza/honey/title.kt diff --git a/honey-kt-extension/src/dev/shiza/honey/title.kt b/honey-kt-extension/src/dev/shiza/honey/title.kt new file mode 100644 index 0000000..ecd0db9 --- /dev/null +++ b/honey-kt-extension/src/dev/shiza/honey/title.kt @@ -0,0 +1,73 @@ +import dev.shiza.honey.dispatcher.TitleMessageDispatcher +import dev.shiza.honey.dispatcher.MessageDispatcher +import dev.shiza.honey.message.Message +import net.kyori.adventure.audience.Audience +import net.kyori.adventure.text.Component + +typealias TitleConfigurer = TitleMessageDispatcher.() -> Unit +typealias MessageConfigurer = MessageDispatcher.() -> Unit + +fun times(fadeIn: Int, stay: Int, fadeOut: Int): Triple = + Triple(fadeIn, stay, fadeOut) + + +fun TitleMessageDispatcher.createTitle( + recipient: Audience, + titleConfig: MessageConfigurer, + subtitleConfig: MessageConfigurer, + fadeIn: Int, + stay: Int, + fadeOut: Int +): MessageDispatcher = + createTitle() + .recipient(recipient) + .title { base -> base.apply(titleConfig) } + .subtitle { base -> base.apply(subtitleConfig) } + .times(fadeIn, stay, fadeOut) + +fun Audience.createTitle( + titleConfig: MessageConfigurer, + subtitleConfig: MessageConfigurer, + fadeIn: Int, + stay: Int, + fadeOut: Int +): TitleMessageDispatcher = + createTitle() + .recipient(this) + .title { base -> base.apply(titleConfig) } + .subtitle { base -> base.apply(subtitleConfig) } + .times(fadeIn, stay, fadeOut) + +fun Player.createTitle( + titleConfig: MessageConfigurer, + subtitleConfig: MessageConfigurer, + fadeIn: Int, + stay: Int, + fadeOut: Int +): TitleMessageDispatcher = + createTitle() + .recipient(this) + .title { base -> base.apply(titleConfig) } + .subtitle { base -> base.apply(subtitleConfig) } + .times(fadeIn, stay, fadeOut) + + +fun TitleConfigurer.withFormattedTitle(messageFormatter: MessageFormatter): TitleMessageDispatcher = + this.title { base -> + base.apply { messageFormatter.format(this) } + } + +fun Audience.createTitle( + messageFormatter: MessageFormatter, + titleConfig: MessageConfigurer, + subtitleConfig: MessageConfigurer, + fadeIn: Int, + stay: Int, + fadeOut: Int +): TitleMessageDispatcher = + createTitle() + .recipient(this) + .withFormattedTitle(messageFormatter) + .title { base -> base.apply(titleConfig) } + .subtitle { base -> base.apply(subtitleConfig) } + .times(fadeIn, stay, fadeOut) From 033a9fbdbe147ac899c80573f801d4779d68f11a Mon Sep 17 00:00:00 2001 From: Damian Date: Sat, 16 Nov 2024 19:26:11 +0100 Subject: [PATCH 3/8] Add kotlin extension (2) --- .../src/dev/shiza/honey/audience.kt | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 honey-kt-extension/src/dev/shiza/honey/audience.kt diff --git a/honey-kt-extension/src/dev/shiza/honey/audience.kt b/honey-kt-extension/src/dev/shiza/honey/audience.kt new file mode 100644 index 0000000..dc2fa1c --- /dev/null +++ b/honey-kt-extension/src/dev/shiza/honey/audience.kt @@ -0,0 +1,39 @@ +import dev.shiza.honey.dispatcher.AdventureMessageDispatcher +import dev.shiza.honey.message.Message +import net.kyori.adventure.audience.Audience +import net.kyori.adventure.text.Component + +typealias MessageFormatter = MessageFormatter +typealias MessageDispatcher = MessageDispatcher + +fun AdventureMessageDispatcher.createChat(messageFormatter: MessageFormatter): MessageDispatcher = + MessageBaseDispatcher( + messageFormatter, + Message.blank(), + Audience.empty(), + Audience::sendMessage + ) + +fun AdventureMessageDispatcher.createActionBar(messageFormatter: MessageFormatter): MessageDispatcher = + MessageBaseDispatcher( + messageFormatter, + Message.blank(), + Audience.empty(), + Audience::sendActionBar + ) + +fun Audience.createChat(messageFormatter: MessageFormatter): MessageDispatcher = + MessageBaseDispatcher( + messageFormatter, + Message.blank(), + this, + Audience::sendMessage + ) + +fun Audience.createActionBar(messageFormatter: MessageFormatter): MessageDispatcher = + MessageBaseDispatcher( + messageFormatter, + Message.blank(), + this, + Audience::sendActionBar + ) From 3a61b5a83b259b9d0283dd7738ec38a077cbd057 Mon Sep 17 00:00:00 2001 From: Damian Date: Sat, 16 Nov 2024 19:27:05 +0100 Subject: [PATCH 4/8] Add kotlin extension (3) --- .../src/dev/shiza/honey/player.kt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 honey-kt-extension/src/dev/shiza/honey/player.kt diff --git a/honey-kt-extension/src/dev/shiza/honey/player.kt b/honey-kt-extension/src/dev/shiza/honey/player.kt new file mode 100644 index 0000000..b312ce4 --- /dev/null +++ b/honey-kt-extension/src/dev/shiza/honey/player.kt @@ -0,0 +1,25 @@ +import dev.shiza.honey.dispatcher.AdventureMessageDispatcher +import dev.shiza.honey.message.Message +import net.kyori.adventure.audience.Audience +import net.kyori.adventure.text.Component +import org.bukkit.entity.Player + +typealias MessageFormatter = MessageFormatter +typealias MessageDispatcher = MessageDispatcher + + +fun Player.createChat(messageFormatter: MessageFormatter): MessageDispatcher = + MessageBaseDispatcher( + messageFormatter, + Message.blank(), + this, + Audience::sendMessage + ) + +fun Player.createActionBar(messageFormatter: MessageFormatter): MessageDispatcher = + MessageBaseDispatcher( + messageFormatter, + Message.blank(), + this, + Audience::sendActionBar + ) From 02cc31cd9bc32a357bf44652e042f0adbaf55f0d Mon Sep 17 00:00:00 2001 From: Damian Date: Sat, 16 Nov 2024 21:43:46 +0100 Subject: [PATCH 5/8] Add kotlin extension (4) --- honey-kt-extension/src/dev/shiza/honey/audience.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/honey-kt-extension/src/dev/shiza/honey/audience.kt b/honey-kt-extension/src/dev/shiza/honey/audience.kt index dc2fa1c..b17d51f 100644 --- a/honey-kt-extension/src/dev/shiza/honey/audience.kt +++ b/honey-kt-extension/src/dev/shiza/honey/audience.kt @@ -3,10 +3,9 @@ import dev.shiza.honey.message.Message import net.kyori.adventure.audience.Audience import net.kyori.adventure.text.Component -typealias MessageFormatter = MessageFormatter typealias MessageDispatcher = MessageDispatcher -fun AdventureMessageDispatcher.createChat(messageFormatter: MessageFormatter): MessageDispatcher = +fun AdventureMessageDispatcher.createChat(): MessageDispatcher = MessageBaseDispatcher( messageFormatter, Message.blank(), @@ -14,7 +13,7 @@ fun AdventureMessageDispatcher.createChat(messageFormatter: MessageFormatter): M Audience::sendMessage ) -fun AdventureMessageDispatcher.createActionBar(messageFormatter: MessageFormatter): MessageDispatcher = +fun AdventureMessageDispatcher.createActionBar(): MessageDispatcher = MessageBaseDispatcher( messageFormatter, Message.blank(), @@ -22,7 +21,7 @@ fun AdventureMessageDispatcher.createActionBar(messageFormatter: MessageFormatte Audience::sendActionBar ) -fun Audience.createChat(messageFormatter: MessageFormatter): MessageDispatcher = +fun Audience.createChat(): MessageDispatcher = MessageBaseDispatcher( messageFormatter, Message.blank(), @@ -30,7 +29,7 @@ fun Audience.createChat(messageFormatter: MessageFormatter): MessageDispatcher = Audience::sendMessage ) -fun Audience.createActionBar(messageFormatter: MessageFormatter): MessageDispatcher = +fun Audience.createActionBar(): MessageDispatcher = MessageBaseDispatcher( messageFormatter, Message.blank(), From 0bb68f681ea9968aabf650b7fdb7e0c153b22aca Mon Sep 17 00:00:00 2001 From: Damian Date: Sat, 16 Nov 2024 21:45:53 +0100 Subject: [PATCH 6/8] Add kotlin extension (5) --- .../src/dev/shiza/honey/title.kt | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/honey-kt-extension/src/dev/shiza/honey/title.kt b/honey-kt-extension/src/dev/shiza/honey/title.kt index ecd0db9..7aa45f1 100644 --- a/honey-kt-extension/src/dev/shiza/honey/title.kt +++ b/honey-kt-extension/src/dev/shiza/honey/title.kt @@ -51,23 +51,3 @@ fun Player.createTitle( .subtitle { base -> base.apply(subtitleConfig) } .times(fadeIn, stay, fadeOut) - -fun TitleConfigurer.withFormattedTitle(messageFormatter: MessageFormatter): TitleMessageDispatcher = - this.title { base -> - base.apply { messageFormatter.format(this) } - } - -fun Audience.createTitle( - messageFormatter: MessageFormatter, - titleConfig: MessageConfigurer, - subtitleConfig: MessageConfigurer, - fadeIn: Int, - stay: Int, - fadeOut: Int -): TitleMessageDispatcher = - createTitle() - .recipient(this) - .withFormattedTitle(messageFormatter) - .title { base -> base.apply(titleConfig) } - .subtitle { base -> base.apply(subtitleConfig) } - .times(fadeIn, stay, fadeOut) From 0b616370e4b575ab0a799aa6a0ddf3ba3ffd4e1d Mon Sep 17 00:00:00 2001 From: rafal <63915083+rchomczyk@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:58:13 +0100 Subject: [PATCH 7/8] Add kotlin extension (6) --- .idea/gradle.xml | 1 - honey-kt-extension/build.gradle.kts | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index bb8d63b..4a3641f 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -23,7 +23,6 @@ diff --git a/honey-kt-extension/build.gradle.kts b/honey-kt-extension/build.gradle.kts index 0c31ee9..ec3bcfb 100644 --- a/honey-kt-extension/build.gradle.kts +++ b/honey-kt-extension/build.gradle.kts @@ -5,6 +5,15 @@ plugins { kotlin("jvm") version "2.0.21" } +repositories { + maven("https://repo.papermc.io/repository/maven-public/") +} + +dependencies { + compileOnly(project(":honey-common")) + compileOnly("io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT") +} + honeyPublish { artifactId = "honey-kt-extension" } From 6dc1c8fb55cc4916c8c7efe96f44403d96ce2992 Mon Sep 17 00:00:00 2001 From: rafal <63915083+rchomczyk@users.noreply.github.com> Date: Sat, 16 Nov 2024 23:15:27 +0100 Subject: [PATCH 8/8] Add kotlin extension (7) --- README.md | 88 ++++++++++++++++--- .../src/dev/shiza/honey/audience.kt | 28 ++---- .../src/dev/shiza/honey/dispatcher.kt | 4 - .../src/dev/shiza/honey/player.kt | 21 ++--- .../src/dev/shiza/honey/title.kt | 27 +++--- .../src/dev/shiza/honey/types.kt | 9 ++ 6 files changed, 111 insertions(+), 66 deletions(-) delete mode 100644 honey-kt-extension/src/dev/shiza/honey/dispatcher.kt create mode 100644 honey-kt-extension/src/dev/shiza/honey/types.kt diff --git a/README.md b/README.md index e7c4b04..71b6df5 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ A message library, which focuses on simplicity and flexibility. ### Get started -#### Gradle (kts) +#### Gradle DSL (kts) || std ##### Add repository @@ -16,12 +16,20 @@ A message library, which focuses on simplicity and flexibility. maven("https://repo.shiza.dev/releases") ``` +```groovy +maven { url 'https://repo.shiza.dev/releases' } +``` + ##### Add dependency ```kotlin implementation("dev.shiza:honey:2.0.0") ``` +```groovy +implementation 'dev.shiza:honey:2.0.0' +``` + #### Maven ##### Add repository @@ -41,32 +49,86 @@ implementation("dev.shiza:honey:2.0.0") ``` -### Use case +![test-plugin showcase](assets/image.png) + +### Use case Java A showcase of how to use *honey*, can be found in [honey-test-plugin](honey-test-plugin) module. +## With Formatter placeholder: ```java -// * sending a message as title with all honey features -AdventureMessageDispatcher.createTitle() + +/* for titles::audience */ +dispatcher.createTitle() .recipient(event.getPlayer()) - .title(it -> it.template(formatter, "Hello!")) - .subtitle(it -> it.template(formatter, "It is a pleasure to see you there {{player.getName}}") + .title(it -> it.template("Hello!")) + .subtitle(it -> it.template("It is a pleasure to see you there {{player.getName}}") .variable("player", event.getPlayer())) .times(2, 4, 2) .dispatch(); -// * sending a message as chat message with all honey features -AdventureMessageDispatcher.createChat() +/* for chat::audience */ +dispatcher.createChat() .recipient(Bukkit.getServer()) - .template(formatter, "{{player.getName}} has joined the server!") + .template("{{player.getName}} has joined the server!") .variable("player", event.getPlayer()) .dispatch(); -// * sending a message as action bar with predefined message without any placeholder support -AdventureMessageDispatcher.createActionBar() +/* for actionbar::audience */ +dispatcher.createActionBar() .recipient(event.getPlayer()) - .template(Component.text("Honey is great, isn't it?")) + .template("Honey is great, isn't it?") .dispatch(); ``` -![test-plugin showcase](assets/image.png) +## Without formatter, plain template: +```java + AdventureMessageDispatcher.createChat() + .recipient(Bukkit.getServer()) + .template(Component.text("Somebody joined to the server!").color(NamedTextColor.RED)) + .dispatch(); + + AdventureMessageDispatcher.createActionBar() + .recipient(event.getPlayer()) + .template(formatter, "Honey is great, isn't it?") + .dispatch(); + } +``` + +### Use case Kotlin +```kotlin +AdventureMessageDispatcher.createChat() + .recipient(event.player) + .template(Component.text("Hello!")) + .dispatch() + +AdventureMessageDispatcher.createActionBar() + .recipient(event.player) + .template(Component.text("This is an action bar message!")) + .dispatch() + +/* player::audience */ +player.createChat() + .template(Component.text("A custom chat message")) + .dispatch() + +player.createActionBar() + .template(Component.text("This is a custom action bar")) + .dispatch() + +AdventureMessageDispatcher.createTitle() + .recipient(event.player) + .title { it.template(Component.text("Hello!")) } + .subtitle { it.template(Component.text("It's great to see you!")) } + .times(2, 4, 2) + .dispatch() +``` + +### Dispatcher Synchronously vs Asynchronously: +- [dispatch](https://github.com/rchomczyk/honey-common/src/dev/shiza/honey/message/dispatcher/MessageBaseDispatcher.java#L71) + This method immediately delivers the message synchronously. It calls the deliver function with the rendered message and the recipient, and the action is completed immediately. + +- [dispatchAsync](https://github.com/rchomczyk/honey-common/src/dev/shiza/honey/message/dispatcher/MessageBaseDispatcher.java#L76) + This method delivers the message asynchronously. It returns a CompletableFuture that performs the message rendering in the background and then delivers the result once it's ready. It allows non-blocking behavior and handles exceptions asynchronously. +``` + diff --git a/honey-kt-extension/src/dev/shiza/honey/audience.kt b/honey-kt-extension/src/dev/shiza/honey/audience.kt index b17d51f..7973759 100644 --- a/honey-kt-extension/src/dev/shiza/honey/audience.kt +++ b/honey-kt-extension/src/dev/shiza/honey/audience.kt @@ -1,38 +1,28 @@ -import dev.shiza.honey.dispatcher.AdventureMessageDispatcher -import dev.shiza.honey.message.Message +import dev.shiza.honey.TypedMessageDispatcher +import dev.shiza.honey.adventure.message.dispatcher.AdventureMessageDispatcher +import dev.shiza.honey.message.dispatcher.MessageBaseDispatcher import net.kyori.adventure.audience.Audience -import net.kyori.adventure.text.Component -typealias MessageDispatcher = MessageDispatcher - -fun AdventureMessageDispatcher.createChat(): MessageDispatcher = +fun AdventureMessageDispatcher.createChat(): TypedMessageDispatcher = MessageBaseDispatcher( - messageFormatter, - Message.blank(), Audience.empty(), Audience::sendMessage ) -fun AdventureMessageDispatcher.createActionBar(): MessageDispatcher = +fun AdventureMessageDispatcher.createActionBar(): TypedMessageDispatcher = MessageBaseDispatcher( - messageFormatter, - Message.blank(), Audience.empty(), Audience::sendActionBar ) -fun Audience.createChat(): MessageDispatcher = +fun Audience.createChat(): TypedMessageDispatcher = MessageBaseDispatcher( - messageFormatter, - Message.blank(), - this, + this, Audience::sendMessage ) -fun Audience.createActionBar(): MessageDispatcher = +fun Audience.createActionBar(): TypedMessageDispatcher = MessageBaseDispatcher( - messageFormatter, - Message.blank(), - this, + this, Audience::sendActionBar ) diff --git a/honey-kt-extension/src/dev/shiza/honey/dispatcher.kt b/honey-kt-extension/src/dev/shiza/honey/dispatcher.kt deleted file mode 100644 index 86c2a12..0000000 --- a/honey-kt-extension/src/dev/shiza/honey/dispatcher.kt +++ /dev/null @@ -1,4 +0,0 @@ -package dev.shiza.honey - -class dispatcher { -} \ No newline at end of file diff --git a/honey-kt-extension/src/dev/shiza/honey/player.kt b/honey-kt-extension/src/dev/shiza/honey/player.kt index b312ce4..aed9780 100644 --- a/honey-kt-extension/src/dev/shiza/honey/player.kt +++ b/honey-kt-extension/src/dev/shiza/honey/player.kt @@ -1,25 +1,16 @@ -import dev.shiza.honey.dispatcher.AdventureMessageDispatcher -import dev.shiza.honey.message.Message +import dev.shiza.honey.TypedMessageDispatcher +import dev.shiza.honey.message.dispatcher.MessageBaseDispatcher import net.kyori.adventure.audience.Audience -import net.kyori.adventure.text.Component import org.bukkit.entity.Player -typealias MessageFormatter = MessageFormatter -typealias MessageDispatcher = MessageDispatcher - - -fun Player.createChat(messageFormatter: MessageFormatter): MessageDispatcher = +fun Player.createChat(): TypedMessageDispatcher = MessageBaseDispatcher( - messageFormatter, - Message.blank(), - this, + this, Audience::sendMessage ) -fun Player.createActionBar(messageFormatter: MessageFormatter): MessageDispatcher = +fun Player.createActionBar(): TypedMessageDispatcher = MessageBaseDispatcher( - messageFormatter, - Message.blank(), - this, + this, Audience::sendActionBar ) diff --git a/honey-kt-extension/src/dev/shiza/honey/title.kt b/honey-kt-extension/src/dev/shiza/honey/title.kt index 7aa45f1..596cb61 100644 --- a/honey-kt-extension/src/dev/shiza/honey/title.kt +++ b/honey-kt-extension/src/dev/shiza/honey/title.kt @@ -1,25 +1,22 @@ -import dev.shiza.honey.dispatcher.TitleMessageDispatcher -import dev.shiza.honey.dispatcher.MessageDispatcher -import dev.shiza.honey.message.Message +import dev.shiza.honey.MessageConfigurer +import dev.shiza.honey.adventure.message.dispatcher.AdventureMessageDispatcher +import dev.shiza.honey.message.dispatcher.TitleMessageDispatcher import net.kyori.adventure.audience.Audience import net.kyori.adventure.text.Component +import org.bukkit.entity.Player -typealias TitleConfigurer = TitleMessageDispatcher.() -> Unit -typealias MessageConfigurer = MessageDispatcher.() -> Unit - -fun times(fadeIn: Int, stay: Int, fadeOut: Int): Triple = +fun times(fadeIn: Int, stay: Int, fadeOut: Int): Triple = Triple(fadeIn, stay, fadeOut) - -fun TitleMessageDispatcher.createTitle( +fun AdventureMessageDispatcher.createTitle( recipient: Audience, titleConfig: MessageConfigurer, subtitleConfig: MessageConfigurer, fadeIn: Int, stay: Int, fadeOut: Int -): MessageDispatcher = - createTitle() +): TitleMessageDispatcher = + AdventureMessageDispatcher.createTitle() .recipient(recipient) .title { base -> base.apply(titleConfig) } .subtitle { base -> base.apply(subtitleConfig) } @@ -31,8 +28,8 @@ fun Audience.createTitle( fadeIn: Int, stay: Int, fadeOut: Int -): TitleMessageDispatcher = - createTitle() +): TitleMessageDispatcher = + AdventureMessageDispatcher.createTitle() .recipient(this) .title { base -> base.apply(titleConfig) } .subtitle { base -> base.apply(subtitleConfig) } @@ -44,8 +41,8 @@ fun Player.createTitle( fadeIn: Int, stay: Int, fadeOut: Int -): TitleMessageDispatcher = - createTitle() +): TitleMessageDispatcher = + AdventureMessageDispatcher.createTitle() .recipient(this) .title { base -> base.apply(titleConfig) } .subtitle { base -> base.apply(subtitleConfig) } diff --git a/honey-kt-extension/src/dev/shiza/honey/types.kt b/honey-kt-extension/src/dev/shiza/honey/types.kt new file mode 100644 index 0000000..7e6dc6f --- /dev/null +++ b/honey-kt-extension/src/dev/shiza/honey/types.kt @@ -0,0 +1,9 @@ +package dev.shiza.honey + +import dev.shiza.honey.message.dispatcher.MessageDispatcher +import net.kyori.adventure.audience.Audience +import net.kyori.adventure.text.Component + +typealias TypedMessageDispatcher = MessageDispatcher + +typealias MessageConfigurer = TypedMessageDispatcher.() -> Unit