Chat plugin I'm working on

Status
This thread has been locked.

icecub

Premium
Feedback score
1
Posts
22
Reactions
24
Resources
0
In some other post I mentioned I'd like to see a chat with multiple tabs for separating different chat channels. Turned out that idea did come up a long time ago, but that project was never finished. The unfinished source code was released under the MIT license on Github, so I started working on it. Result so far:

ipSB4yn.gif


Currently working:
  • Public channels (can be created / removed ingame)
  • Private channels (like Admin)
  • Invite only channels (currently works with permissions, still need to add channel owner)
  • DMs
  • Server output channel
  • Users can join / leave channels
Still need to add:
  • Ability to ignore / block users
  • Configurable chat history length
  • Configurable max amount of public channels a user can join
  • Bungeecord support for cross server chat
Known problems:
  • Due to server limitations, this can result in large client logs. This is mostly resolved by client gzip compression, but would still be an issue for players AFK'ing over 24 hours on busy servers. Probably can't be solved other than player simply disabling chat.
  • Server chat packets seem to return null values during a reload command, which causes users to get disconnected. Currently working on that one.
Feel free to leave any comments / tips / constructive criticism etc :)
 
Last edited:
PebbleHost
High performance, consistent uptime and fast support. Minecraft hosting that just works.

FZR_1987

When I RIP, Pls # rm -rf *
Premium
Feedback score
0
Posts
10
Reactions
2
Resources
0
This is awesome, and would definitely add onto our server!

I have a few suggestions in case you were looking for any:
1. Store all chats in the plugin folder, similar to something like ChatControl ( For administrative reasons )
- Global chat, global-uniqueID.txt which would be compressed at 00:00 like what log currently is. ( History/Global Folder )
- Member channels, name-chname-uniqueID.txt, compress when all members of the chat have left and close the channel ( History/Private Folder )

2. Intercept symbols in chat to perform channel actions
- For example running !! before a string in the current channel:
- These can only be run by channel admin
- !!list - List channel members
- !!kick <user>
- !!block <user> ( gives permission chat.deny.uniqueID )
- !!mute <user>
- !!makeadmin <user>
- !!close - Closes chat
- Members:
- !!leave - So a user can leave any chat ( permission chat.leave.* | -chat.leave.GlobalUniqueID to disallow leaving etc )

3. Unique channel ID's ( To control permissions )
- When a user creates a channel, they could become the admin by obtaining perm: chat.uniqueID
- The plugin can set a uniqueID to each channel, this way users could create one with the name global, but would not get the perm to admin the actual global

4. Command to list all channels and display if they are private or open ( Password locked chats )

5. Admin command & permission to join silently and be hidden from !!list ( chat.join.* )

I will add some more ideas a bit later, hope these help.
 

icecub

Premium
Feedback score
1
Posts
22
Reactions
24
Resources
0
This is awesome, and would definitely add onto our server!

I have a few suggestions in case you were looking for any:
1. Store all chats in the plugin folder, similar to something like ChatControl ( For administrative reasons )
- Global chat, global-uniqueID.txt which would be compressed at 00:00 like what log currently is. ( History/Global Folder )
- Member channels, name-chname-uniqueID.txt, compress when all members of the chat have left and close the channel ( History/Private Folder )

2. Intercept symbols in chat to perform channel actions
- For example running !! before a string in the current channel:
- These can only be run by channel admin
- !!list - List channel members
- !!kick <user>
- !!block <user> ( gives permission chat.deny.uniqueID )
- !!mute <user>
- !!makeadmin <user>
- !!close - Closes chat
- Members:
- !!leave - So a user can leave any chat ( permission chat.leave.* | -chat.leave.GlobalUniqueID to disallow leaving etc )

3. Unique channel ID's ( To control permissions )
- When a user creates a channel, they could become the admin by obtaining perm: chat.uniqueID
- The plugin can set a uniqueID to each channel, this way users could create one with the name global, but would not get the perm to admin the actual global

4. Command to list all channels and display if they are private or open ( Password locked chats )

5. Admin command & permission to join silently and be hidden from !!list ( chat.join.* )

I will add some more ideas a bit later, hope these help.

Thanks a lot for your tips! I'll probably add all of them. Point 3 is actually already implemented, except for the permissions part. Each channel has both a unique ID and a display name. Certain static channels can be added in the config file. You'll automatically join those channels and it's not possible to leave them. Though I'd probably add the option to mute them instead. Channels created from within the game are dynamic and logged to a SQLite database. But I'll probably also add the option to write yml / txt log files and compress them.[DOUBLEPOST=1581351571][/DOUBLEPOST]
Damn. This is very cool, never see any plugin like that. Keep it up man, i'm amazed wow.

Dope, Verry nice and clean, One of unique ones I've seen

Thanks! :D Ye I'm already getting a bunch of requests, even some users begging me to release the source, haha
 
Last edited:

Ephrey

Premium
Feedback score
2
Posts
119
Reactions
31
Resources
0
Thanks a lot for your tips! I'll probably add all of them. Point 3 is actually already implemented, except for the permissions part. Each channel has both a unique ID and a display name. Certain static channels can be added in the config file. You'll automatically join those channels and it's not possible to leave them. Though I'd probably add the option to mute them instead. Channels created from within the game are dynamic and logged to a SQLite database. But I'll probably also add the option to write yml / txt log files and compress them.[DOUBLEPOST=1581351571][/DOUBLEPOST]



Thanks! :D Ye I'm already getting a bunch of requests, even some users begging me to release the source, haha
I wonder why are they begging you :D
 

icecub

Premium
Feedback score
1
Posts
22
Reactions
24
Resources
0
I wonder why are they begging you :D

Well there are 3 types of users:
  1. Impatient bastards thinking they can just run a completely unfinished resource on their public servers and then complain it doesn't work properly (by far the biggest group, lol)
  2. Developers intending to steal the idea / resource and release their own version of it. Though most here will probably fail because this requires NMS coding and that's usually way over their heads (otherwise they wouldn't need my source to do it, lol)
  3. Developers interested on how this is actually accomplished. Though they tend to just offer to co-develop it with me
 
Status
This thread has been locked.
Top