diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/BlockBreakTable.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/BlockBreakTable.kt index d6e2df8..415af20 100644 --- a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/BlockBreakTable.kt +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/BlockBreakTable.kt @@ -1,16 +1,5 @@ package gay.pizza.foundation.heimdall.table -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.timestamp - -object BlockBreakTable : Table("block_breaks") { - val time = timestamp("time") - val player = uuid("player") - val world = uuid("world") - val x = double("x") - val y = double("y") - val z = double("z") - val pitch = double("pitch") - val yaw = double("yaw") +object BlockBreakTable : PlayerTimedLocalEventTable("block_breaks") { val block = text("block") } diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/BlockPlaceTable.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/BlockPlaceTable.kt index 9a89da6..71712fd 100644 --- a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/BlockPlaceTable.kt +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/BlockPlaceTable.kt @@ -1,16 +1,5 @@ package gay.pizza.foundation.heimdall.table -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.timestamp - -object BlockPlaceTable : Table("block_places") { - val time = timestamp("time") - val player = uuid("player") - val world = uuid("world") - val x = double("x") - val y = double("y") - val z = double("z") - val pitch = double("pitch") - val yaw = double("yaw") +object BlockPlaceTable : PlayerTimedLocalEventTable("block_places") { val block = text("block") } diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/EntityKillTable.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/EntityKillTable.kt index 730ad71..7210fc6 100644 --- a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/EntityKillTable.kt +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/EntityKillTable.kt @@ -1,17 +1,6 @@ package gay.pizza.foundation.heimdall.table -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.timestamp - -object EntityKillTable : Table("entity_kills") { - val time = timestamp("time") - val player = uuid("player") +object EntityKillTable : PlayerTimedLocalEventTable("entity_kills") { val entity = uuid("entity") - val world = uuid("world") - val x = double("x") - val y = double("y") - val z = double("z") - val pitch = double("pitch") - val yaw = double("yaw") val entityType = text("entity_type") } diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerAdvancementTable.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerAdvancementTable.kt index 53ddf9f..e2d6ffc 100644 --- a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerAdvancementTable.kt +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerAdvancementTable.kt @@ -1,16 +1,5 @@ package gay.pizza.foundation.heimdall.table -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.timestamp - -object PlayerAdvancementTable : Table("player_advancements") { - val time = timestamp("time") - val player = uuid("player") - val world = uuid("world") - val x = double("x") - val y = double("y") - val z = double("z") - val pitch = double("pitch") - val yaw = double("yaw") +object PlayerAdvancementTable : PlayerTimedLocalEventTable("player_advancements") { val advancement = text("advancement") } diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerDeathTable.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerDeathTable.kt index 17ec1c2..c2172e9 100644 --- a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerDeathTable.kt +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerDeathTable.kt @@ -1,17 +1,6 @@ package gay.pizza.foundation.heimdall.table -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.timestamp - -object PlayerDeathTable : Table("player_deaths") { - val time = timestamp("time") - val world = uuid("world") - val player = uuid("player") - val x = double("x") - val y = double("y") - val z = double("z") - val pitch = double("pitch") - val yaw = double("yaw") +object PlayerDeathTable : PlayerTimedLocalEventTable("player_deaths") { val experience = double("experience") val message = text("message").nullable() } diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerPositionTable.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerPositionTable.kt index 4e19ba6..7a91c6c 100644 --- a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerPositionTable.kt +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerPositionTable.kt @@ -1,15 +1,3 @@ package gay.pizza.foundation.heimdall.table -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.timestamp - -object PlayerPositionTable : Table("player_positions") { - val time = timestamp("time") - val player = uuid("player") - val world = uuid("world") - val x = double("x") - val y = double("y") - val z = double("z") - val pitch = double("pitch") - val yaw = double("yaw") -} +object PlayerPositionTable : PlayerTimedLocalEventTable("player_positions") diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerTimedLocalEventTable.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerTimedLocalEventTable.kt new file mode 100644 index 0000000..fece6c2 --- /dev/null +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/PlayerTimedLocalEventTable.kt @@ -0,0 +1,7 @@ +package gay.pizza.foundation.heimdall.table + +abstract class PlayerTimedLocalEventTable(name: String) : TimedLocalEventTable(name) { + val player = uuid("player") + val pitch = double("pitch") + val yaw = double("yaw") +} diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/TimedEventTable.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/TimedEventTable.kt new file mode 100644 index 0000000..4d16202 --- /dev/null +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/TimedEventTable.kt @@ -0,0 +1,8 @@ +package gay.pizza.foundation.heimdall.table + +import org.jetbrains.exposed.sql.Table +import org.jetbrains.exposed.sql.javatime.timestamp + +abstract class TimedEventTable(name: String) : Table(name) { + val time = timestamp("time") +} diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/TimedLocalEventTable.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/TimedLocalEventTable.kt new file mode 100644 index 0000000..a838ca3 --- /dev/null +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/TimedLocalEventTable.kt @@ -0,0 +1,8 @@ +package gay.pizza.foundation.heimdall.table + +abstract class TimedLocalEventTable(name: String) : TimedEventTable(name) { + val world = uuid("world") + val x = double("x") + val y = double("y") + val z = double("z") +} diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/WorldChangeTable.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/WorldChangeTable.kt index b24fd4a..4491295 100644 --- a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/WorldChangeTable.kt +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/table/WorldChangeTable.kt @@ -1,10 +1,6 @@ package gay.pizza.foundation.heimdall.table -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.timestamp - -object WorldChangeTable : Table("world_changes") { - val time = timestamp("time") +object WorldChangeTable : TimedEventTable("world_changes") { val player = uuid("player") val fromWorld = uuid("from_world") val toWorld = uuid("to_world") diff --git a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/view/BlockChangeView.kt b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/view/BlockChangeView.kt index 5fe0b78..02bcb35 100644 --- a/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/view/BlockChangeView.kt +++ b/common-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/view/BlockChangeView.kt @@ -1,17 +1,8 @@ package gay.pizza.foundation.heimdall.view -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.timestamp +import gay.pizza.foundation.heimdall.table.PlayerTimedLocalEventTable -object BlockChangeView : Table("block_changes") { +object BlockChangeView : PlayerTimedLocalEventTable("block_changes") { val isBreak = bool("break") - val time = timestamp("time") - val player = uuid("player") - val world = uuid("world") - val x = double("x") - val y = double("y") - val z = double("z") - val pitch = double("pitch") - val yaw = double("yaw") val block = text("block") } diff --git a/foundation-chaos/src/main/kotlin/gay/pizza/foundation/chaos/ChaosController.kt b/foundation-chaos/src/main/kotlin/gay/pizza/foundation/chaos/ChaosController.kt index 3ff60a3..4b6f384 100644 --- a/foundation-chaos/src/main/kotlin/gay/pizza/foundation/chaos/ChaosController.kt +++ b/foundation-chaos/src/main/kotlin/gay/pizza/foundation/chaos/ChaosController.kt @@ -1,7 +1,6 @@ package gay.pizza.foundation.chaos import gay.pizza.foundation.chaos.model.ChaosConfig -import gay.pizza.foundation.chaos.model.ChaosModuleConfig import gay.pizza.foundation.chaos.modules.ChaosModule import gay.pizza.foundation.chaos.modules.ChaosModules import org.bukkit.boss.BarColor diff --git a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/BlockBreak.kt b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/BlockBreak.kt index 74ba363..7e276fb 100644 --- a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/BlockBreak.kt +++ b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/BlockBreak.kt @@ -15,19 +15,16 @@ class BlockBreak( val material: Material, val timestamp: Instant = Instant.now() ) : HeimdallEvent() { - constructor(event: BlockBreakEvent) : this(event.player.uniqueId, event.block.location, event.block.type) + constructor(event: BlockBreakEvent) : this( + event.player.uniqueId, + event.block.location, + event.block.type + ) override fun store(transaction: Transaction) { transaction.apply { BlockBreakTable.insert { - it[time] = timestamp - it[player] = playerUniqueIdentity - it[world] = location.world.uid - it[x] = location.x - it[y] = location.y - it[z] = location.z - it[pitch] = location.pitch.toDouble() - it[yaw] = location.yaw.toDouble() + putPlayerTimedLocalEvent(it, timestamp, location, playerUniqueIdentity) it[block] = material.key.toString() } } diff --git a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/BlockPlace.kt b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/BlockPlace.kt index 215b9dc..967e8e5 100644 --- a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/BlockPlace.kt +++ b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/BlockPlace.kt @@ -15,19 +15,16 @@ class BlockPlace( val material: Material, val timestamp: Instant = Instant.now() ) : HeimdallEvent() { - constructor(event: BlockPlaceEvent) : this(event.player.uniqueId, event.block.location, event.block.type) + constructor(event: BlockPlaceEvent) : this( + event.player.uniqueId, + event.block.location, + event.block.type + ) override fun store(transaction: Transaction) { transaction.apply { BlockPlaceTable.insert { - it[time] = timestamp - it[player] = playerUniqueIdentity - it[world] = location.world.uid - it[x] = location.x - it[y] = location.y - it[z] = location.z - it[pitch] = location.pitch.toDouble() - it[yaw] = location.yaw.toDouble() + putPlayerTimedLocalEvent(it, timestamp, location, playerUniqueIdentity) it[block] = material.key.toString() } } diff --git a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/EntityKill.kt b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/EntityKill.kt index 222e1e1..b4bad47 100644 --- a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/EntityKill.kt +++ b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/EntityKill.kt @@ -17,14 +17,7 @@ class EntityKill( override fun store(transaction: Transaction) { transaction.apply { EntityKillTable.insert { - it[time] = timestamp - it[player] = playerUniqueIdentity - it[world] = location.world.uid - it[x] = location.x - it[y] = location.y - it[z] = location.z - it[pitch] = location.pitch.toDouble() - it[yaw] = location.yaw.toDouble() + putPlayerTimedLocalEvent(it, timestamp, location, playerUniqueIdentity) it[entity] = entityUniqueIdentity it[entityType] = entityTypeName } diff --git a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/ExposedExtensions.kt b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/ExposedExtensions.kt new file mode 100644 index 0000000..0165741 --- /dev/null +++ b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/ExposedExtensions.kt @@ -0,0 +1,41 @@ +package gay.pizza.foundation.heimdall.plugin.event + +import gay.pizza.foundation.heimdall.table.PlayerTimedLocalEventTable +import gay.pizza.foundation.heimdall.table.TimedEventTable +import gay.pizza.foundation.heimdall.table.TimedLocalEventTable +import org.bukkit.Location +import org.jetbrains.exposed.sql.statements.InsertStatement +import java.time.Instant +import java.util.* + +fun T.putTimedEvent(statement: InsertStatement, time: Instant) { + statement[this.time] = time +} + +fun T.putTimedLocalEvent( + statement: InsertStatement, + time: Instant, + location: Location +) { + statement[this.time] = time + statement[this.world] = location.world.uid + statement[this.x] = location.x + statement[this.y] = location.y + statement[this.z] = location.z +} + +fun T.putPlayerTimedLocalEvent( + statement: InsertStatement, + time: Instant, + location: Location, + player: UUID +) { + statement[this.time] = time + statement[this.world] = location.world.uid + statement[this.x] = location.x + statement[this.y] = location.y + statement[this.z] = location.z + statement[this.player] = player + statement[this.pitch] = location.pitch.toDouble() + statement[this.yaw] = location.yaw.toDouble() +} diff --git a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerAdvancement.kt b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerAdvancement.kt index 414bbbc..b463bf5 100644 --- a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerAdvancement.kt +++ b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerAdvancement.kt @@ -15,19 +15,16 @@ class PlayerAdvancement( val advancement: Advancement, val timestamp: Instant = Instant.now() ) : HeimdallEvent() { - constructor(event: PlayerAdvancementDoneEvent) : this(event.player.uniqueId, event.player.location, event.advancement) + constructor(event: PlayerAdvancementDoneEvent) : this( + event.player.uniqueId, + event.player.location, + event.advancement + ) override fun store(transaction: Transaction) { transaction.apply { PlayerAdvancementTable.insert { - it[time] = timestamp - it[player] = playerUniqueIdentity - it[world] = location.world.uid - it[x] = location.x - it[y] = location.y - it[z] = location.z - it[pitch] = location.pitch.toDouble() - it[yaw] = location.yaw.toDouble() + putPlayerTimedLocalEvent(it, timestamp, location, playerUniqueIdentity) it[advancement] = this@PlayerAdvancement.advancement.key.toString() } } diff --git a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerDeath.kt b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerDeath.kt index 812b162..710d703 100644 --- a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerDeath.kt +++ b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerDeath.kt @@ -25,14 +25,7 @@ class PlayerDeath( override fun store(transaction: Transaction) { transaction.apply { PlayerDeathTable.insert { - it[time] = timestamp - it[player] = playerUniqueIdentity - it[world] = location.world.uid - it[x] = location.x - it[y] = location.y - it[z] = location.z - it[pitch] = location.pitch.toDouble() - it[yaw] = location.yaw.toDouble() + putPlayerTimedLocalEvent(it, timestamp, location, playerUniqueIdentity) it[experience] = experienceLevel.toDouble() it[message] = deathMessage } diff --git a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerPosition.kt b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerPosition.kt index 3123c47..c78871d 100644 --- a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerPosition.kt +++ b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/PlayerPosition.kt @@ -13,19 +13,15 @@ class PlayerPosition( val location: Location, val timestamp: Instant = Instant.now() ) : HeimdallEvent() { - constructor(event: PlayerMoveEvent) : this(event.player.uniqueId, event.to) + constructor(event: PlayerMoveEvent) : this( + event.player.uniqueId, + event.to + ) override fun store(transaction: Transaction) { transaction.apply { PlayerPositionTable.insert { - it[time] = timestamp - it[player] = playerUniqueIdentity - it[world] = location.world.uid - it[x] = location.x - it[y] = location.y - it[z] = location.z - it[pitch] = location.pitch.toDouble() - it[yaw] = location.yaw.toDouble() + putPlayerTimedLocalEvent(it, timestamp, location, playerUniqueIdentity) } } } diff --git a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/WorldChange.kt b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/WorldChange.kt index 7974955..b63c655 100644 --- a/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/WorldChange.kt +++ b/foundation-heimdall/src/main/kotlin/gay/pizza/foundation/heimdall/plugin/event/WorldChange.kt @@ -17,7 +17,7 @@ class WorldChange( override fun store(transaction: Transaction) { transaction.apply { WorldChangeTable.insert { - it[time] = timestamp + putTimedEvent(it, timestamp) it[player] = playerUniqueIdentity it[fromWorld] = fromWorldId it[fromWorldName] = fromWorldActualName diff --git a/tool-gjallarhorn/src/main/kotlin/gay/pizza/foundation/heimdall/tool/state/BlockChangelog.kt b/tool-gjallarhorn/src/main/kotlin/gay/pizza/foundation/heimdall/tool/state/BlockChangelog.kt index 1b3cc10..d97c9ac 100644 --- a/tool-gjallarhorn/src/main/kotlin/gay/pizza/foundation/heimdall/tool/state/BlockChangelog.kt +++ b/tool-gjallarhorn/src/main/kotlin/gay/pizza/foundation/heimdall/tool/state/BlockChangelog.kt @@ -63,9 +63,9 @@ class BlockChangelog( BlockChangelog(BlockChangeView.select(filter).orderBy(BlockChangeView.time).map { row -> val time = row[BlockChangeView.time] val changeIsBreak = row[BlockChangeView.isBreak] - val x = row[gay.pizza.foundation.heimdall.view.BlockChangeView.x] - val y = row[gay.pizza.foundation.heimdall.view.BlockChangeView.y] - val z = row[gay.pizza.foundation.heimdall.view.BlockChangeView.z] + val x = row[BlockChangeView.x] + val y = row[BlockChangeView.y] + val z = row[BlockChangeView.z] val block = row[gay.pizza.foundation.heimdall.view.BlockChangeView.block] val location = BlockCoordinate(x.toLong(), y.toLong(), z.toLong())