Spigot BetterChat [Channels, Staff Chat & More!] 1.1.0

BetterChat allows multiple custom chat channels as well as a staff chat

  1. ConnorLinfoot submitted a new resource:

    BetterChat - BetterChat allows multiple custom chat channels as well as a staff chat

    Read more about this resource...
  2. ConnorLinfoot updated BetterChat [Channels, Staff Chat & More!] with a new update entry:

    BetterChat V1.1.0

    Read the rest of this update entry...
  3. JugadorNinja


    hey i get this error with the lastest spigot version 1.8.7:
    [03:08:30] [Server thread/ERROR]: Could not pass event AsyncPlayerChatEvent to BetterChat v1.1
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at net.minecraft.server.v1_8_R3.PlayerConnection.chat(PlayerConnection.java:1057) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer.chat(CraftPlayer.java:242) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at com.earth2me.essentials.EssentialsPlayerListener.usePowertools(EssentialsPlayerListener.java:619) [Essentials-2.x-SNAPSHOT.jar:?]
    at com.earth2me.essentials.EssentialsPlayerListener.onPlayerInteract(EssentialsPlayerListener.java:557) [Essentials-2.x-SNAPSHOT.jar:?]
    at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_45]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:227) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:194) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:190) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1173) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at net.minecraft.server.v1_8_R3.PacketPlayInArmAnimation.a(PacketPlayInArmAnimation.java:18) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at net.minecraft.server.v1_8_R3.PacketPlayInArmAnimation.a(PacketPlayInArmAnimation.java:1) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_45]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_45]
    at net.minecraft.server.v1_8_R3.SystemUtils.a(SystemUtils.java:19) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:718) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:367) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:657) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:560) [spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_45]
    Caused by: java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextNode(Unknown Source) ~[?:1.8.0_45]
    at java.util.HashMap$KeyIterator.next(Unknown Source) ~[?:1.8.0_45]
    at com.connorlinfoot.betterchat.Listeners.Chat.onPlayerChat(Chat.java:35) ~[?:?]
    at sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_45]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-44c59bf-8f0f4ed]
    ... 29 more
  4. I really like the plugin.
  5. can you make different rank chat like /sc msg is for staff and have one like /vip msg for vip players ?
  6. cow


    this is just my opinion of what i think you should add / change, you can choose whether to implement these things or not.
    either way, i still like your plugin

    my suggestions:
    • add formats for channel so i can control exactly what the players see instead of just the prefix.
      in the config, it would have "format: "&1[&2insert prefix here&1] &3%playername% &1> &3 %message%" and the plugin replaces the placeholders with actual values
      (even better, make placeholderapi a dependency, so we can use all its placeholders: https://www.spigotmc.org/resources/placeholderapi.6245/)
    • get rid of the staff channel
      personally, i dislike anything that is hard coded. AND, why have it hard coded,
      when people can just add a normal channel called "staff"
      it will also make it easier for you in the future when you have to change something,
      currently, you will have to change it in the normal channel classes AND in the separate staff chat class
    • shortcuts to switch channels.
      players currently have to type "/channel example123" and then they type their message to talk in the channel
      i would like for players to be able to type "example123:hello world" to switch to the example123 channel and say "hello world"
      if you have ever played at massivecraft.com, you will know what im talking about here
    • aliases
      a list of strings for each channel, that the plugin will treat the same as the channel name
      e.g. my suggestion about shortcuts above, the player can also type "ex:hello world" because i have added "ex" to the channels aliases in the config

    everything below this line is for when you decide its time to do a full recode of the plugin:
    i looked in your source, because i wanted to do some of the things i mentioned above,
    and i noticed a few things about it that could be changed to improve performance and speed of the plugin:
      • every time you need something, from the config, the plugin opens the config file to get it.
        it is better practice to get everything you need out of the config on start up, save it to a variable, and retrieve it from the variable while running
        if you need to modify the config, modify it in the variable, and then save the variable into the config on shutdown
      • make a channel object.
        this is directly related to the config suggestion above
        while reading that dot point, you might have been thinking "How the **** do i save everything about every channel into a variable??"
        make a channel class, and while you are loading stuff from the config, iterate over the channels section, in the for loop, create a new instance of the channel object and save everything about the channel into it.

        edit from just after i posted this: didnt realise this comment was that long
  7. If a spy command for admin's to see channel messages were to be enabled (as every group is a team) I'd download this plugin. Untill then I'll wait :)
    • Agree Agree x 2
  8. Is there anyway to see all of the channels? At once other than console?
  9. I've tried this plugin out and my immediate reaction is

    + Awesome with customization. Truly.

    - No range settings? This should be added. I need a local chat!
    - No shortcuts.
    - Too picky on the capitalization...
    - Permission requirement is set to false by default but players can't join without permission...?
    - No private msging?
    - No msg spying either then.

    All in all, great start. If the cons are adressed and we'd see a heavily customizable plugin for once I'd fall in love with this!
  10. We recently switched to this on the server I admin on and I really love it, its much easier to use then our last chat plug-in and the channels are extremely helpful. I would like to ask though, is there an option to disable colour and fonts for certain ranks, or in certain channels? I have it set so players don't have access to it through essentials, but it still works in the default channel, we have a huge problem with people abusing it and it I can't disabled it. If there isn't a way to disable it, would you be willing to add one? I'm worried that it is going to get more out of hand than it already is or that some poor kid is going to have a seizure because of people spamming &k.
  11. I'll try and have a look at it this week. Not really updated this plugin in a while (as you can probably see) but I've being wanted to update it again. :)
  12. Thank you for the response. I did find right after posting that I could disable it in the config so I did, but it disabled it in all channels. I am looking forward to an update though and I'm sure I'm only one of many who would really appreciate it!
  13. I would pay 10$ usd++ for a bungee version of this tbh.
  14. If you want to donate I'd be happy to look at adding Bungee support ;)
  15. Add bungee support, and you've got urself a deal.
  16. Hey,

    I've being working on BungeeCord support for this and had a question. Am I correct in thinking you want this to work the same way as Bukkit? So it'll have a global chat on your entire network?
  17. Yes, global chat channels.
  18. This plugin is great!
    But if you add some features it will make your plugin 1st better then all of the other chat channels plugin!
    Needed Features:
    Chat and msg per worlds that the user chooses!
    this feature will be so great for people planning to run couple of game modes on a single server!
    Another side feature is that your plugin could add a tab per world ability too that would be great!
    If you add all of that i will donate 100% dude :D
  19. Hey, pretty sweet plugin but I'm having some issues. I don't know if this is a mistake on my side of a bug in the plugin but:

    Here's my current config for reference: http://i.imgur.com/0dXbpHT.png

    When I type '/c join admin' it joins the 'admin' channel and uses the colors I chose just fine, but when I type '/ac <message>' it only uses the prefix color I chose and makes my name orange and my text white, like the default. Is there a setting I'm missing to change the colors it uses when you use the shortcut command to just send one message but not toggle the channel on?