summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/chat/channel/Channel.kt5
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelCannotInviteSelfException.kt7
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelLimitExceededException.kt7
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelMemberLimitExceededException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerAlreadyBannedException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBannedException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassBanException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassKickException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerMembershipLimitExceededException.kt10
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerNotBannedException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPrivateRequiresInvitationException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/permission/LunaticChatPermissionNode.kt18
12 files changed, 102 insertions, 1 deletions
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/chat/channel/Channel.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/chat/channel/Channel.kt
index cc1f743..568839a 100644
--- a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/chat/channel/Channel.kt
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/chat/channel/Channel.kt
@@ -13,6 +13,7 @@ import java.util.UUID
* @property isPrivate Indicates whether the channel is private or public.
* @property ownerId UUID of the user who owns the channel.
* @property createdAt Timestamp of when the channel was created.
+ * @property bannedPlayers Set of UUIDs of players who are banned from the channel.
*/
@Serializable
data class Channel(
@@ -23,6 +24,10 @@ data class Channel(
@Serializable(with = UUIDSerializer::class)
val ownerId: UUID,
val createdAt: Long = System.currentTimeMillis(),
+ val bannedPlayers: Set<
+ @Serializable(with = UUIDSerializer::class)
+ UUID,
+ > = emptySet(),
) {
init {
require(id.matches(CHANNEL_ID_PATTERN)) {
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelCannotInviteSelfException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelCannotInviteSelfException.kt
new file mode 100644
index 0000000..5d1be73
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelCannotInviteSelfException.kt
@@ -0,0 +1,7 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelCannotInviteSelfException(
+ playerId: UUID,
+) : Exception("Player $playerId cannot invite themselves")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelLimitExceededException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelLimitExceededException.kt
new file mode 100644
index 0000000..c111ab4
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelLimitExceededException.kt
@@ -0,0 +1,7 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+class ChannelLimitExceededException(
+ val limit: Int,
+) : Exception(
+ "Channel creation failed: server has reached the maximum limit of $limit channels",
+ )
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelMemberLimitExceededException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelMemberLimitExceededException.kt
new file mode 100644
index 0000000..7e080dc
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelMemberLimitExceededException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+class ChannelMemberLimitExceededException(
+ val channelId: String,
+ val limit: Int,
+) : Exception(
+ "Cannot join channel '$channelId': channel has reached the maximum member limit of $limit",
+ )
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerAlreadyBannedException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerAlreadyBannedException.kt
new file mode 100644
index 0000000..ce905f0
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerAlreadyBannedException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerAlreadyBannedException(
+ val playerId: UUID,
+ val channelId: String,
+) : Exception("Player $playerId is already banned from channel $channelId")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBannedException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBannedException.kt
new file mode 100644
index 0000000..9a70c72
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBannedException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerBannedException(
+ playerId: UUID,
+ val channelId: String,
+) : Exception("Player $playerId is banned from channel $channelId")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassBanException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassBanException.kt
new file mode 100644
index 0000000..529f590
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassBanException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerBypassBanException(
+ playerId: UUID,
+ val channelId: String,
+) : Exception("Cannot ban player $playerId: player has bypass permission")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassKickException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassKickException.kt
new file mode 100644
index 0000000..e818657
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassKickException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerBypassKickException(
+ playerId: UUID,
+ val channelId: String,
+) : Exception("Cannot kick player $playerId: player has bypass permission")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerMembershipLimitExceededException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerMembershipLimitExceededException.kt
new file mode 100644
index 0000000..afad6bf
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerMembershipLimitExceededException.kt
@@ -0,0 +1,10 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerMembershipLimitExceededException(
+ val playerId: UUID,
+ val limit: Int,
+) : Exception(
+ "Player $playerId has reached the maximum channel membership limit of $limit",
+ )
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerNotBannedException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerNotBannedException.kt
new file mode 100644
index 0000000..8dcc293
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerNotBannedException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerNotBannedException(
+ playerId: UUID,
+ val channelId: String,
+) : Exception("Player $playerId is not banned from channel $channelId")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPrivateRequiresInvitationException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPrivateRequiresInvitationException.kt
new file mode 100644
index 0000000..737a529
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPrivateRequiresInvitationException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPrivateRequiresInvitationException(
+ val playerId: UUID,
+ val channelId: String,
+) : Exception("Player $playerId cannot join private channel $channelId without invitation")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/permission/LunaticChatPermissionNode.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/permission/LunaticChatPermissionNode.kt
index 838a48b..9b6c3c6 100644
--- a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/permission/LunaticChatPermissionNode.kt
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/permission/LunaticChatPermissionNode.kt
@@ -27,13 +27,29 @@ sealed class LunaticChatPermissionNode(
object ChannelStatus : LunaticChatPermissionNode("lunaticchat.command.lc.channel.status")
+ object ChannelInfo : LunaticChatPermissionNode("lunaticchat.command.lc.channel.info")
+
object ChannelDelete : LunaticChatPermissionNode("lunaticchat.command.lc.channel.delete")
+ object ChannelInvite : LunaticChatPermissionNode("lunaticchat.command.lc.channel.invite")
+
+ object ChannelKick : LunaticChatPermissionNode("lunaticchat.command.lc.channel.kick")
+
+ object ChannelBan : LunaticChatPermissionNode("lunaticchat.command.lc.channel.ban")
+
+ object ChannelUnban : LunaticChatPermissionNode("lunaticchat.command.lc.channel.unban")
+
+ object ChannelMod : LunaticChatPermissionNode("lunaticchat.command.lc.channel.mod")
+
+ object ChannelOwnership : LunaticChatPermissionNode("lunaticchat.command.lc.channel.ownership")
+
object ChatMode : LunaticChatPermissionNode("lunaticchat.command.lc.chatmode")
object ChatModeToggle : LunaticChatPermissionNode("lunaticchat.command.lc.chatmode.toggle")
object Spy : LunaticChatPermissionNode("lunaticchat.spy")
- object NoticeUpdate : LunaticChatPermissionNode("lunaticchat.noticeUpdate")
+ object NoticeUpdate : LunaticChatPermissionNode("lunaticchat.noticeupdate")
+
+ object ChannelBypass : LunaticChatPermissionNode("lunaticchat.channelbypass")
}