Skip to content

Commit

Permalink
feat: ✨ more events
Browse files Browse the repository at this point in the history
add: message events
add: command events
  • Loading branch information
FYWinds committed May 5, 2023
1 parent 2dd9094 commit 1ba50f3
Show file tree
Hide file tree
Showing 23 changed files with 345 additions and 66 deletions.
16 changes: 15 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,21 @@

### Events

- PlayerLogin
#### Player

- [x] player_join
- [x] player_quit
- [ ] player_advancement

#### Message

- [x] player_chat
- [x] server_broadcast

#### Command

- [x] player_command
- [x] server_command

## Usage

Expand Down
12 changes: 12 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,18 @@ tasks {
}
}
}

register("devDebug") {
dependsOn(build)

doLast {
copy {
from("build/libs/${project.name}-$version-all.jar")
rename("${project.name}-$version-all.jar", "${project.name}.jar")
into("/home/fywinds/projects/Bukkit-plugin/server/plugins/")
}
}
}
}

configure<org.jlleitschuh.gradle.ktlint.KtlintExtension> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package fyi.fyw.mc.pluginnonebot.events

import fyi.fyw.mc.pluginnonebot.PluginNonebot
import fyi.fyw.mc.pluginnonebot.models.NEventBase
import fyi.fyw.mc.pluginnonebot.models.NEventFrame
import fyi.fyw.mc.pluginnonebot.models.event.BaseEventFrame
import fyi.fyw.mc.pluginnonebot.registry.WebsocketsRegistry
import org.bukkit.event.Listener
import java.util.*

abstract class EventBroadcaster : Listener {
val id: String
Expand All @@ -15,9 +13,9 @@ abstract class EventBroadcaster : Listener {
WebsocketsRegistry.broadcast(message)
}

protected fun broadcast(message: NEventBase) {
protected fun broadcast(message: BaseEventFrame) {
// TODO save to event database
broadcast(gson.toJson(NEventFrame(UUID.randomUUID().toString(), System.currentTimeMillis(), message)))
broadcast(gson.toJson(message))
}

companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package fyi.fyw.mc.pluginnonebot.events.broadcasters

import fyi.fyw.mc.pluginnonebot.events.EventBroadcaster
import fyi.fyw.mc.pluginnonebot.models.NEntityLocation
import fyi.fyw.mc.pluginnonebot.models.NSimplePlayer
import fyi.fyw.mc.pluginnonebot.models.event.BaseEventFrame
import fyi.fyw.mc.pluginnonebot.models.event.EventPlayerChat
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.player.AsyncPlayerChatEvent

class BroadcasterPlayerChat : EventBroadcaster() {
@EventHandler(priority = EventPriority.MONITOR)
fun listen(event: AsyncPlayerChatEvent) {
broadcast(
BaseEventFrame(
data = EventPlayerChat(
NSimplePlayer(
event.player.displayName,
event.player.uniqueId.toString(),
event.player.isOnline,
NEntityLocation(
event.player.location.world!!.name,
event.player.location.x,
event.player.location.y,
event.player.location.z,
event.player.location.yaw,
event.player.location.pitch,
),
),
event.recipients.map {
NSimplePlayer(
it.displayName,
it.uniqueId.toString(),
it.isOnline,
NEntityLocation(
it.location.world!!.name,
it.location.x,
it.location.y,
it.location.z,
it.location.yaw,
it.location.pitch,
),
)
}.toSet(),
event.message,
event.isCancelled,
),
type = "message",
detailType = "player_chat",
),
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package fyi.fyw.mc.pluginnonebot.events.broadcasters

import fyi.fyw.mc.pluginnonebot.events.EventBroadcaster
import fyi.fyw.mc.pluginnonebot.models.NEntityLocation
import fyi.fyw.mc.pluginnonebot.models.NSimplePlayer
import fyi.fyw.mc.pluginnonebot.models.event.BaseEventFrame
import fyi.fyw.mc.pluginnonebot.models.event.EventPlayerCommand
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.player.PlayerCommandPreprocessEvent

class BroadcasterPlayerCommand : EventBroadcaster() {
@EventHandler(priority = EventPriority.MONITOR)
fun listen(event: PlayerCommandPreprocessEvent) {
broadcast(
BaseEventFrame(
data = EventPlayerCommand(
NSimplePlayer(
event.player.displayName,
event.player.uniqueId.toString(),
event.player.isOnline,
NEntityLocation(
event.player.location.world!!.name,
event.player.location.x,
event.player.location.y,
event.player.location.z,
event.player.location.yaw,
event.player.location.pitch,
),
),
event.message,
event.isCancelled,
),
type = "command",
detailType = "player_command",
),
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package fyi.fyw.mc.pluginnonebot.events.broadcasters

import fyi.fyw.mc.pluginnonebot.events.EventBroadcaster
import fyi.fyw.mc.pluginnonebot.models.NEntityLocation
import fyi.fyw.mc.pluginnonebot.models.NSimplePlayer
import fyi.fyw.mc.pluginnonebot.models.event.BaseEventFrame
import fyi.fyw.mc.pluginnonebot.models.event.EventPlayerJoin
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.player.PlayerJoinEvent

class BroadcasterPlayerJoin : EventBroadcaster() {

@EventHandler(priority = EventPriority.MONITOR)
fun listen(event: PlayerJoinEvent) {
broadcast(
BaseEventFrame(
data = EventPlayerJoin(
NSimplePlayer(
event.player.displayName,
event.player.uniqueId.toString(),
event.player.isOnline,
NEntityLocation(
event.player.location.world!!.name,
event.player.location.x,
event.player.location.y,
event.player.location.z,
event.player.location.yaw,
event.player.location.pitch,
),
),
event.joinMessage ?: "",
),
type = "player",
detailType = "player_join",
),

)
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package fyi.fyw.mc.pluginnonebot.events.broadcasters

import fyi.fyw.mc.pluginnonebot.events.EventBroadcaster
import fyi.fyw.mc.pluginnonebot.models.NEntityLocation
import fyi.fyw.mc.pluginnonebot.models.NSimplePlayer
import fyi.fyw.mc.pluginnonebot.models.event.BaseEventFrame
import fyi.fyw.mc.pluginnonebot.models.event.EventPlayerQuit
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.player.PlayerQuitEvent

class BroadcasterPlayerQuit : EventBroadcaster() {
@EventHandler(priority = EventPriority.MONITOR)
fun listen(event: PlayerQuitEvent) {
broadcast(
BaseEventFrame(
data = EventPlayerQuit(
NSimplePlayer(
event.player.displayName,
event.player.uniqueId.toString(),
event.player.isOnline,
NEntityLocation(
event.player.location.world!!.name,
event.player.location.x,
event.player.location.y,
event.player.location.z,
event.player.location.yaw,
event.player.location.pitch,
),
),
event.quitMessage ?: "",
),
type = "player",
detailType = "player_quit",
),

)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package fyi.fyw.mc.pluginnonebot.events.broadcasters

import fyi.fyw.mc.pluginnonebot.events.EventBroadcaster
import fyi.fyw.mc.pluginnonebot.models.NEntityLocation
import fyi.fyw.mc.pluginnonebot.models.NSimplePlayer
import fyi.fyw.mc.pluginnonebot.models.event.BaseEventFrame
import fyi.fyw.mc.pluginnonebot.models.event.EventServerChat
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.server.BroadcastMessageEvent

class BroadcasterServerChat : EventBroadcaster() {
@EventHandler(priority = EventPriority.MONITOR)
fun listen(event: BroadcastMessageEvent) {
broadcast(
BaseEventFrame(
data = EventServerChat(
event.recipients.filterIsInstance<Player>().map {
NSimplePlayer(
it.displayName,
it.uniqueId.toString(),
it.isOnline,
NEntityLocation(
it.location.world!!.name,
it.location.x,
it.location.y,
it.location.z,
it.location.yaw,
it.location.pitch,
),
)
}.toSet(),
message = event.message,
event.isCancelled,
),
type = "message",
detailType = "server_broadcast",
),
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package fyi.fyw.mc.pluginnonebot.events.broadcasters

import fyi.fyw.mc.pluginnonebot.events.EventBroadcaster
import fyi.fyw.mc.pluginnonebot.models.NSimpleCommandSender
import fyi.fyw.mc.pluginnonebot.models.event.BaseEventFrame
import fyi.fyw.mc.pluginnonebot.models.event.EventServerCommand
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.server.ServerCommandEvent

class BroadcasterServerCommand : EventBroadcaster() {
@EventHandler(priority = EventPriority.MONITOR)
fun listen(event: ServerCommandEvent) {
broadcast(
BaseEventFrame(
data = EventServerCommand(
NSimpleCommandSender(
event.sender.name,
),
event.command,
event.isCancelled,
),
type = "command",
detailType = "server_command",
),
)
}
}
10 changes: 0 additions & 10 deletions src/main/kotlin/fyi/fyw/mc/pluginnonebot/models/NEventBase.kt

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package fyi.fyw.mc.pluginnonebot.models

class NSimpleCommandSender(val name: String)
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package fyi.fyw.mc.pluginnonebot.models.event

interface BaseEvent
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package fyi.fyw.mc.pluginnonebot.models.event

import com.google.gson.annotations.SerializedName
import java.io.Serializable
import java.util.*

class BaseEventFrame(
val id: String = UUID.randomUUID().toString(), // Version 4 UUID
val time: Long = System.currentTimeMillis(), // Unix timestamp
val data: BaseEvent? = null,
val type: String,
@SerializedName("detail_type") val detailType: String,
@SerializedName("sub_type") val subType: String = "",
) : Serializable
Loading

0 comments on commit 1ba50f3

Please sign in to comment.