-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: user tables * feat: base translations * feat: build system events * chore: simplify permission system * chore: add more utility extensions * feat: coroutine utils * chore: add example-env --------- Signed-off-by: Liam Sage <[email protected]> Co-authored-by: Liam Sage <[email protected]>
- Loading branch information
1 parent
fbf70f2
commit 04722ff
Showing
18 changed files
with
692 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
DATABASE_URL=jdbc:mysql://localhost:3306/your_database | ||
DATABASE_DRIVER=com.mysql.cj.jdbc.Driver | ||
DATABASE_USER=your_user | ||
DATABASE_PASSWORD=your_password |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package net.blockventuremc.cache | ||
|
||
import net.blockventuremc.database.model.DatabaseUser | ||
import net.blockventuremc.extensions.toDatabaseUserDB | ||
import java.util.UUID | ||
|
||
object PlayerCache { | ||
private var _cache = mapOf<UUID, DatabaseUser>() | ||
|
||
fun get(uuid: UUID): DatabaseUser = _cache[uuid] ?: register(uuid.toDatabaseUserDB()) | ||
|
||
private fun register(user: DatabaseUser): DatabaseUser { | ||
_cache += Pair(user.uuid, user) | ||
return user | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,5 @@ | ||
package net.blockventuremc.consts | ||
|
||
import org.bukkit.permissions.Permission | ||
import org.bukkit.permissions.PermissionDefault | ||
const val BUILD_PERMISSIONS ="blockventure.build" | ||
|
||
val BUILD_PERMISSIONS = Permission("blockventure.build", PermissionDefault.OP) | ||
const val ADMIN_PERMISSIONS = "blockventure.admin" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
62 changes: 62 additions & 0 deletions
62
src/main/kotlin/net/blockventuremc/database/functions/Users.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
package net.blockventuremc.database.functions | ||
|
||
import net.blockventuremc.database.functions.TableUsers.userUUID | ||
import net.blockventuremc.database.model.DatabaseUser | ||
import net.blockventuremc.database.smartTransaction | ||
import net.blockventuremc.database.toCalendar | ||
import net.blockventuremc.modules.general.model.Languages | ||
import net.blockventuremc.modules.general.model.Ranks | ||
import org.jetbrains.exposed.sql.* | ||
import org.jetbrains.exposed.sql.javatime.timestamp | ||
import java.util.* | ||
import kotlin.time.Duration.Companion.seconds | ||
|
||
object TableUsers : Table("users") { | ||
val userUUID = varchar("uuid", 45) | ||
val userName = varchar("username", 24) | ||
val userRank = enumerationByName("rank", 24, Ranks::class).default(Ranks.Default) | ||
val userLanguage = enumerationByName("language", 2, Languages::class).default(Languages.EN) | ||
|
||
val userFirstJoined = timestamp("firstJoined") | ||
val userLastJoined = timestamp("lastTimeOnline") | ||
val onlineTime = long("onlineTime").default(0) | ||
|
||
override val primaryKey = PrimaryKey(userUUID) | ||
} | ||
|
||
|
||
fun getDatabaseUserOrNull(uuid: UUID): DatabaseUser? = smartTransaction { | ||
return@smartTransaction TableUsers.selectAll().where { userUUID eq uuid.toString() }.firstOrNull()?.let(::mapToDatabaseUser) | ||
} | ||
|
||
private fun mapToDatabaseUser(row: ResultRow): DatabaseUser = with(row) { | ||
return DatabaseUser( | ||
uuid = UUID.fromString(this[userUUID]), | ||
username = this[TableUsers.userName], | ||
rank = this[TableUsers.userRank], | ||
language = this[TableUsers.userLanguage], | ||
firstJoined = this[TableUsers.userFirstJoined].toCalendar(), | ||
lastTimeJoined = this[TableUsers.userLastJoined].toCalendar(), | ||
onlineTime = this[TableUsers.onlineTime].seconds, | ||
) | ||
} | ||
|
||
|
||
fun createDatabaseUser(user: DatabaseUser): DatabaseUser = smartTransaction { | ||
TableUsers.insert { | ||
it[userUUID] = user.uuid.toString() | ||
it[userName] = user.username | ||
} | ||
return@smartTransaction user | ||
} | ||
|
||
fun updateDatabaseUser(user: DatabaseUser) = smartTransaction { | ||
TableUsers.update({ userUUID eq user.uuid.toString() }) { | ||
it[userName] = user.username | ||
it[userRank] = user.rank | ||
it[userLanguage] = user.language | ||
it[userFirstJoined] = user.firstJoined.javaInstant | ||
it[userLastJoined] = user.lastTimeJoined.javaInstant | ||
it[onlineTime] = user.onlineTime.inWholeSeconds | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
src/main/kotlin/net/blockventuremc/database/model/DatabaseUser.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package net.blockventuremc.database.model | ||
|
||
import dev.fruxz.ascend.tool.time.calendar.Calendar | ||
import net.blockventuremc.modules.general.model.Languages | ||
import net.blockventuremc.modules.general.model.Ranks | ||
import java.util.* | ||
import kotlin.time.Duration | ||
|
||
data class DatabaseUser( | ||
val uuid: UUID, | ||
val username: String, | ||
val rank: Ranks = Ranks.Default, | ||
val language: Languages = Languages.EN, | ||
|
||
// Other | ||
val firstJoined: Calendar = Calendar.now(), | ||
val lastTimeJoined: Calendar = Calendar.now(), | ||
val onlineTime: Duration = Duration.ZERO, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 30 additions & 0 deletions
30
src/main/kotlin/net/blockventuremc/modules/general/commands/TestCommand.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package net.blockventuremc.modules.general.commands | ||
|
||
import net.blockventuremc.annotations.BlockCommand | ||
import net.blockventuremc.database.model.DatabaseUser | ||
import net.blockventuremc.modules.general.model.Ranks | ||
import org.bukkit.command.Command | ||
import org.bukkit.command.CommandExecutor | ||
import org.bukkit.command.CommandSender | ||
import org.bukkit.entity.Player | ||
import org.bukkit.permissions.PermissionDefault | ||
|
||
@BlockCommand( | ||
name = "test", | ||
description = "Test command", | ||
permissionDefault = PermissionDefault.FALSE, | ||
) | ||
class TestCommand: CommandExecutor { | ||
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean { | ||
if (sender !is Player) return false | ||
|
||
val u = DatabaseUser(sender.uniqueId, sender.name) | ||
|
||
if (!u.rank.isHigherOrEqual(Ranks.Staff)) { | ||
sender.sendMessage("You do not have permission to use this command.") | ||
return true | ||
} | ||
sender.sendMessage("Test command") | ||
return true | ||
} | ||
} |
Oops, something went wrong.