CyniChat
CyniChat
CyniChat is a chat channel plugin, very similar to HeroChat. It is completely open source and has a number of features that make it useful to any server. However, this plugin will offer a much smoother experience during use. By using alternative storage methods, this plugin will be much faster to load, and much more efficient than the current champion.
Instructions For Use
Key Features
- Chat channel capabilities
- Customisable channels
- The ability to kick, ban and mute people in any one channel
- The ability for individual players to ignore people they choose to (unless otherwise specified)
- The ability to promote and demote individuals inside a channel
- A dialogue system (two people chatting)
Players and Channels
As I mentioned previously, people in your server will be able to ignore other people whom they might not get along with. But since some people might try to ignore the moderators and the operators on your server, you can set them to unignorable in their config files. This option means that no-one will be able to ignore them when they speak unto the masses.
Additional options in the config file for the players include whether they are globally muted or not, what channel they're currently in, that they're banned in, muted in and who they're ignoring. These should only be altered outside of the game if you know know what you are doing with JSON/SQL.
The channel configuration file, on the other hand, contains a lot of customisable content. On creation, each channel is given a few bits and pieces for their details. These include:
Keyword | Description |
---|---|
ID | This refers to the order of creation and the order that channels will appear in the list view |
Name | This is the full, verbose name that will appear in the list view |
Nick | This is the shortcut that you can use to quickly join the channel, as opposed to typing the full channel name |
ircChannel | This is the channel name in the IRC server that you'd like the plugin to join |
ircPassword | This is the corresponding password to the field above. Any channels without passwords can be left blank |
Desc | This is the description that is shown to players in the channel information view |
Pass | This is a settable password that you can use to restrict who joins your channel |
Colour | This controls the colour of the channel fairly obviously enough. Please use the correct names when editing |
Protect | If this is set to true, the channel will require an additional permission to leave, join and talk |
Commands
Command | Description |
---|---|
/ch <channel> [password] | alias of /ch join |
/ch join <channel> [password] | Changes the current channel or joins a new one |
/ch leave [channel] | Leaves the current channel, or the defined channel |
/ch qm <channel> <message> | Sends one message to the defined channel |
/ch ignore <player> | Ignores a named player |
/ch hear <player> | Unignores a named player |
/msg <player> <message> | Sends a message to one player |
/r [message] | Sends a reply to one player if one message has been sent before |
/ch list [page#] | Lists all the channels |
/ch who [channel] | Shows all the players inside a channel |
/afk [message] | Sets a user as afk (cannot receive private messages) |
/me [message] | Transmits an action in the context of the user |
/ch create <name> [nick] | Creates a channel with the defined name and optional nickname |
/ch remove <channel> | Removes a named channel |
/ch info [channel] | Prints the info about one channel |
/ch gmute <player> | Globally mutes one player across all channels |
/ch gunmute <player> | Globally unmutes one player across all channels |
/ch mute <player> [channel] | Mutes one player in either the current channel, or the defined channel |
/ch unmute <player> [channel] | Unmutes one player in either the current, or the defined channel |
/ch kick <player> [channel] | Kicks the player in either the current or the defined channel |
/ch ban <player> [channel] | Bans the player in the current, or the defined channel |
/ch unban <player> [channel] | Unbans the player in the current, or the defined channel |
/ch promote <player> [channel] | Promotes the player to mod in the current, or the defined channel |
/ch demote <player> [channel] | Demotes the Player from mod in the current, or the defined channel |
/ch set <channel> <field> <value> | Changes either the <colour>, <password>, <description>, <ircChannel> or <ircPassword> of a channel as you see fit |
/ch save | Saves the information about all the players and channels |
/ch reload | Saves the information about all the players and channels, then reloads them |
/ch help [page#] | Lists help pages [1 - #] |
Permissions
- cynichat.*
- cynichat.basic.*
- cynichat.basic.join.all
- cynichat.basic.join.<channel>
- cynichat.basic.leave.all
- cynichat.basic.leave.<channel>
- cynichat.basic.talk.all
- cynichat.basic.talk.<channel>
- cynichat.mod.*
- cynichat.mod.kick.all
- cynichat.mod.kick.<channel>
- cynichat.mod.ban.all
- cynichat.mod.ban.<channel>
- cynichat.mod.mute.all
- cynichat.mod.mute.<channel>
- cynichat.mod.promote.all
- cynichat.mod.promote.<channel>
- cynichat.mod.demote.all
- cynichat.mod.demote.<channel>
- cynichat.admin.*
- cynichat.admin.create
- cynichat.admin.remove
- cynichat.admin.save
- cynichat.admin.reload
- cynichat.basic.*
Caveats
- This plugin stores files in either JSON files, or in an SQL database
- This plugin currently has a hard dependency on Vault (So if you're not running Vault, you won't be able to run this. Sorry)
- Vault will need a permissions plugin for this plugin to run properly
- Be aware that, since this plugin is still in alpha, there will be some bugs lying around
Future Features
All of the above are definite guarantees for when the plugin reaches released status and make up the basic parts of the plugin. What follows are some features that are likely to be added into the plugin at a later date:
- IRC integration via Pircbotx Confirmed Feature & Implemented
- An event that other plugins can listen in to Confirmed Feature & Implemented
- A web interface to alter the data in the files/database Confirmed Feature
- Compatibility for cross-server chatting with Bungee Confirmed Feature
(This list is liable to be added to at any point in time)
Got An Idea?
Great, share it with me on either the comments or over a message. If I like it, I'll probably add it into the alpha build. The same goes for any concerns, if you have worries that this is going to break catastrophically with all of the things, then please, speak up. I'd like to be able to rid any potential threats from this so that it is as stable as it needs to be.
Note
Since this is still in the alpha phase of creation, details on this page are likely to change in accordance with the necessary alterations in the code. I will put a link to this code here once I have hit a beta creation. For now, it can be found by interpreting the information in the Repository tab above. From there, people are free to do as they please with my source as long as it follows the GNU GPLv3 licence given above.
Current Progress
I have good news! I'm not dead... That's probably not what you might call very good news, but it's good news for me in any case. What is probably better news is that I finally hashed through the bungeecord compatibility for sending messages because that thing is a pain in the behind to sort out. As of now, I'm going through the code and fixing it up, simply because I am now more competent than when I started coding this plugin and I want it to actually be vaguely usable and recognizable for anyone who wants to use/alter the source code.
The slight problem with this is that there is a lot of code in this plugin... it might take a little while to completely fix up and comment all the code. I'm probably going to offer this plugin in two ways... there will be an option for those that just want to use it on a single server (without bungee) where everything is included in the single jar. This will include the IRC bot that is focused within a single server.
The other option will be a model for anyone who is using BungeeCord. As of currently, this version is still under construction and does not have all the features of the other model. Actually... the only feature in which I have properly added in is the ability to send messages between the central IRC server and the bungee servers (it does work independently of the IRC server too). This means that the BungeeCord model will need an additional component for use on the BungeeCord server.
I will include instructions about how you can go about setting this up at some point or another... but as of now, I must get back to commenting through a lot of code.
Oh... then there's the small part of how Bukkit hasn't actually updated yet so making it compatible with 1.7.* should be interesting...
Thanks for your patience.
<<reply 2120093="">>
Hi.
I'm afraid that I've been somewhat lax in doing any sort of work on this whatsoever (due to the lack of recommended builds as of late)... as of such, it's probably quite unstable past 1.7 and may be prone to exploding.
If, by some miracle, it doesn't explode in 1.7, you can change the colour of the chat on a per-channel basis. Simply setting a different one for each channel via the /ch set {channel} colour {colour} command.
Please note: This is a British spelling so the u is kinda needed here (at least for the moment).
I'll see about properly going through and updating to 1.7 sometime this week.
~CyniCode.
Does it work in CB 1.7.2? I don't know how to change the color of the written text in the chat. Thanks!
wooohooo. super plugin!! thx
@sharqman
Hi.
I'm a bit confused as to why you'd ever want CyniChat on a server which was also running Towny. Both of these plugins offer you the ability to create and control your own chat channels (albeit Towny provides you with the TownyChat jar instead), so I'm really not sure why you'd need to mix the two together.
If you just want the IRC bot part of the plugin, then I can bear that in mind and create an additional plugin for very simple IRC interfacing, otherwise, I'm completely stumped as to why or how you'd want to mix the two.
Does this work with towny chat?
@sakura_blades
Sorry for the slow reply, been a bit busy and I forgot to check in on this.
1. Yes, it will. You won't (or shouldn't) be able to talk in the default Minecraft server channel, however, a default channel is made on creation which is, for all intents and purposes, a global channel (unless someone leaves it).
2. Using various means of witchcraft and trickery. Yes. By editing the .json config file for players, you can manually add them to channels and do various other bits and pieces. The same goes for the SQL storage option in that you can add rows to the tables as you see fit. However, I understand that this leaves open a lot of room for errors to be included and so a web interface will be provided, once I get around to it.
3. Correct. Each chat is given a prefix on creation which, by default, is the first letter of it's name. You can also give them colours which is a nice thing too :). For example, when you load the plugin at the moment, the channel 'global' is created by default, and is given the nickname 'g' (which you can edit in the configs). This nickname is used as the prefix for chatting: [<NICKNAME>] <PLAYER> : <MESSAGE>
4. This plugin is compatible with Vault and uses the various methods within to grab the nice things like Permissions and Prefixes/Suffixes. As far as I can see in Vault, such a bridge between that and Simple Prefix is not in existence at the moment. To see a complete list of all the chat/prefix plugins that Vault, and by extension CyniChat, supports, I give you a link: Vault. Personally, I'm a fan of DroxPerms, but that's just me.
Hopefully this answered your questions. If you need more information, please feel free to ask.
Cyni
A few questions:
1. Will this replace the already existing "global" chat minecraft already has?
2. Is there a way to force players into a channel on join or at any moment? EXAMPLE: Group Change
3. Does this add channel prefixes to the chat? EXAMPLE: [Local] <playername>: <message>
4. Is this compatible with Prefix plugins? EXAMPLE: Simple Prefix
@nicholosophy
Hi Nicholosophy.
As it stands, I'm creating this plugin in stages to make sure that everything fits together and whatnot, so I'm afraid that IRC is slightly on the horizon at the moment until I have sorted out a few bugs in the current built and hit the plugin into a beta stage.
Under normal circumstances, I'd say to look back in a few weeks or so, but I think that I'm going to be a mite busy in the coming months. Out of interest (and so I can do a bit of market research <.< >.>), what is your current IRC plugin and what exactly is wrong with it?
Any news on IRC integration? We currently use HeroChat with some IRC bot but it's, frankly, crap.
In the description, maybe you can put what's so good about this plugin to make us switch from Herochat to Cynichat.