Add join/quit messages to Bifrost.

This commit is contained in:
Logan Gorence 2021-12-23 00:39:36 +00:00
parent 7b9b7b9b3b
commit e45f46dc71
No known key found for this signature in database
GPG Key ID: 9743CEF10935949A

View File

@ -5,8 +5,11 @@ import cloud.kubelet.foundation.core.FoundationCorePlugin
import cloud.kubelet.foundation.core.Util
import com.charleskorn.kaml.Yaml
import io.papermc.paper.event.player.AsyncChatEvent
import net.dv8tion.jda.api.EmbedBuilder
import net.dv8tion.jda.api.JDA
import net.dv8tion.jda.api.JDABuilder
import net.dv8tion.jda.api.MessageBuilder
import net.dv8tion.jda.api.entities.TextChannel
import net.dv8tion.jda.api.events.GenericEvent
import net.dv8tion.jda.api.events.message.MessageReceivedEvent
import net.dv8tion.jda.api.hooks.EventListener
@ -14,7 +17,11 @@ import net.kyori.adventure.text.Component
import net.kyori.adventure.text.TextComponent
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerAdvancementDoneEvent
import org.bukkit.event.player.PlayerJoinEvent
import org.bukkit.event.player.PlayerQuitEvent
import org.bukkit.plugin.java.JavaPlugin
import java.awt.Color
import kotlin.io.path.inputStream
class FoundationBifrostPlugin : JavaPlugin(), EventListener, Listener {
@ -50,15 +57,48 @@ class FoundationBifrostPlugin : JavaPlugin(), EventListener, Listener {
}
}
@EventHandler
private fun onPlayerChat(e: AsyncChatEvent) {
private fun getChannel(): TextChannel? {
val channel = jda.getTextChannelById(config.channel.id)
if (channel == null) {
slF4JLogger.error("Failed to retrieve channel ${config.channel.id}")
return
}
return channel
}
private fun message(f: MessageBuilder.() -> Unit) = MessageBuilder().apply(f).build()
private fun MessageBuilder.embed(f: EmbedBuilder.() -> Unit) {
setEmbeds(EmbedBuilder().apply(f).build())
}
@EventHandler
private fun onPlayerJoin(e: PlayerJoinEvent) {
val channel = getChannel() ?: return
channel.sendMessage(message {
embed {
setAuthor("${e.player.name} joined the server")
setColor(Color.GREEN)
}
}).queue()
}
@EventHandler
private fun onPlayerQuit(e: PlayerQuitEvent) {
val channel = getChannel() ?: return
channel.sendMessage(message {
embed {
setAuthor("${e.player.name} left the server")
setColor(Color.RED)
}
}).queue()
}
@EventHandler
private fun onPlayerChat(e: AsyncChatEvent) {
val channel = getChannel() ?: return
val message = e.message()
if (message is TextComponent) {
channel.sendMessage("${e.player.name}: ${message.content()}").queue()
} else {