[INFO] LoginMessage v0.8.1 - Custom messages for login, command, death events and more! [1.2.5-R2.0]

Discussion in 'Plugin Releases' started by Tahkeh, Jan 8, 2011.

     
  1. Offline

    Tahkeh

    LoginMessage - version 0.8.1 - CraftBukkit build #1.2.5-R2.0
    Thank you LoginMessage users!

    LoginMessage is not just an MOTD plugin, as the name might suggest. It allows you to personalize your server with custom messages, with many different "message events" to choose from; like a player logging in (recurring or newcomer), a player quitting or being kicked, a player dying, a player typing a command, and a message to automatically go off at a given interval!

    Features:
    • Infinite amount of messages
    • Customize who receives and triggers your message
      • Specifically include/exclude: users, Permissions groups, ops, users with a given permission
    • Message events for logging in (recurring or newcomer), logging out, being kicked, typing a command, dying, and an automatic message that will go off at a given interval
    • Use "codes" to display dynamic values; i.e. the player's name, the online list, server time, etc.
    • Compatible with all 16 Minecraft colors
    • iConomy/BOSEconomy and Permissions/SuperPerms support (see readme)
    • Thorough documentation and reference
    [IMG]
    LoginMessage is now (more officially) on DevBukkit! Click the above icon to go to its page.
    [IMG]
    LoginMessage now has a wiki! Click the above image to go to it, hosted by the generous @RTRD. ;)

    READ: You must reload the server after LoginMessage downloads the BukkitPluginUtilities dependency for it to work! If you get an "Unable to install" message, download BPU here and place it in your "lib" directory. Then, rename it to "BukkitPluginUtilities".

    Download LoginMessage v0.8.1
    Download previous versions (from 0.7.1)
    Source

    To use locating features, download the GeoIP City database and extract it to your LoginMessage folder.

    Changelog:
    • [0.8.1] - From now on, changes can be viewed here.
      • Added: New groups config field for permissions-based groups for the %group code, new item/block IDs for latest Minecraft versions
      • Updated: Default death messages for magic death cause, greatly improved death handling system to be much less bug prone
      • Fixed: The slash in the usage for the LoginMessage command has been moved ("lmsg/" to "/lmsg")
      • Removed: priority config field (could not be kept in new Bukkit event system transition)
    • [0.8] - Many changes in this update. Please read here.
    • [0.7.2.2] - Updated to BukkitPluginUtilities 1.2.1, added file size to the download log, added a check to create the lib folder if it's not already there, and removed exception when BPU is not found.
    • [0.7.2.1] - Added more detailed I/O exception log and removed unnecessary file loading.
    • [0.7.2]
      • Added: BOSEconomy support, SuperPerms support, negative node option, permissions node, persistence support, %laston code, %an% special code, random messages, default %ol code, firstlogin event, BukkitPluginUtilities library, config.yml GeoIP "fail" fields
      • Changed: useico and useper to new plugins node, documentation
      • Removed: local fields in config.yml
      • Fixed: NPE for SuperPerms users, quit event being triggered by kick
    • [v0.7.1] - Fixed a ton of bugs. Added op group. Removed Message.txt. Rewrote documentation.
    • [v0.7] - Added new command and kick events, added two files for creating messages, changed Settings.properties to config.yml, added the ability to configure what to show for %time, added the ability to give messages cooldown and delay timers, and fixed various bugs.
    • [v0.6.61] - Fixed a problem causing lag to anyone logging in.
    • [v0.6.6] - Added in new server time code, added Use-iConomy and Use-Permissions fields in Settings.properties, local fields now auto-fill, and added the QuitMessage.
    • [v0.6.5] - Fixed bug where the login/broadcast message wouldn't show the display name. Also added in a few more codes.
    • [v0.6.4] - Updated to latest iConomy and Permissions versions, also got rid of the now-unnecessary %cur code.
    • [v0.6.3] - Added two new codes (%sp and %dpol) and new Settings.properties field allowing you to get rid of the default login message (i.e. "Player has joined the game.").
    • [v0.6.2] - Fixed command issues. Also added new code called "%dpnm".
    • [v0.6.1] - Updated to support CraftBukkit build #617, also fixed Permissions errors.
    • [v0.6] - Now uses the GeoIP database instead of InetAddressLocator. Added new codes and new fields in Settings.properties.
    • [v0.5.4] - Updated to work with the new PLAYER_COMMAND_PREPROCESS event.
    • [v0.5.3] - Updated iConomy API to version 4.0, Permissions API to 2.5. If you have a lower version of either of these plugins, you have to update!
    • [v0.5.2] - Updated iConomy API to version 3.0. If you have iConomy and LoginMessage, make sure you update your iConomy to 3.0!
    • [v0.5.1] - Updated the external jars, might have helped a bit in the whole Permissions bug.
    • [v0.5] - Added /motd option and new codes! Look below for details.
    • [v0.4.3] - Quick update; just recompiling to possibly fix a problem someone had.
    • [v0.4.2] - This time, I did fix the iConomy bug.
    • [v0.4.1] - Fixed a bug that forced you to have iConomy.
    • [v0.4] - Now using iConomy API. Also removed Money-Name in Settings.properties.
    • [v0.3.1] - Fixed duplicate broadcast message bug. Also re-added support for %max!
    • [v0.3] - LoginMessage folder is now relocated to /plugins/LoginMessage; LoginMessage creates separate files for the login message, broadcast message, and settings. This also means you can update each file without having to restart or even reload your server.
    • [v0.2] - Added in the broadcast message and %locale and %country codes.
    • [v0.1] - LoginMesage's release.
    LoginMessage Team:
    v0.9 features (subject to change):
    • SpoutCraft GUIs
    • Uptime code
    • RSS event
    • World change event
    • User-defined methods
    • Ability to download/update/remove GeoIP via commands
    • Message editing via commands
    • Message logging
    Thank you to...
    • tkelly for helping me previously with LoginMessage and other programming in general!
    • Lance, xZise, and jwideman for helping me and other LoginMessage users!
    • NateLogan for giving me the method to find the IP of the server!
    • xZise again for all the great help he has given me with this plugin in general!
    • mathmaniac43 for testing, fixing problems I was stuck on, and overall being a big help! Check out his awesome plugin!
    • GameFreakDude, khamseen_air, Sorken, xZise, an0x, and mathmaniac43 for testing LoginMessage 0.7.1 and LoginMessage Interface!

    This post has been edited 46 times. It was last edited by Tahkeh May 18, 2012 at 8:52 PM.
  2.  
  3. Offline

    Tahkeh

    Thanks! I'll add some properties in the new config.yml. I realized this the other day. Some people might want it to say "sunrise" and "sunset", or whatever. :p
    Use the BroadcastMessage.txt for the entire server. And are you sure, by "Clear-Join-Message" you put "false" exactly? No spaces?
    As far as I know, it is using plugin.yml. This is what it looks like:
    Code:
    name: LoginMessage
    main: com.tahkeh.loginmessage.LoginMessage
    version: 0.6.61
    authors: [Tahkeh]
    commands:
        motd:
            description: Shows the login message upon use if /motd is enabled in Settings.properties.
            usage:
        lmsg:
            description: Shows the login message upon use.
            usage: 
    For a little teaser...let's just say that in v0.7, LoginMessage commands are going to work a lot differently. ;)
  4. Offline

    xZise

    dev.bukkit.org profile:
    xZise
    My Plugins
    Oh :D Didn't know.

    But why does it working, when I type "/motd" ingame while Essentials is holding the command? Because of this I thought you use the PLAYER_COMMAND_PROPROCESS.

    Fabian
  5. Offline

    Tahkeh

    I do use the P_C_P event type for handling the command. :p I thought you could already disable the Essentials MOTD?
  6. Offline

    MCrofl777

    It's like this:

    Code:
    #Wed Jun 29 12:35:20 CEST 2011
    Local-City=
    /motd-Command=true
    Local-Country-Name=
    Local-Country-Code=
    Broadcast-All=false
    Local-Players=
    Date-Format=K\:mm a, z
    Clear-Join-Message=true
    Use-Permissions=true
    Use-iConomy=true
    Clear-Quit-Message=true
    Local-Region=
    Local-Zipcode=
    
    BroadcastMessage:
    &e%nm is in the house!

    LoginMessage:
    [This text file is empty]

    QuitMessage:
    &e%nm has left the building!

    But if a Player joins the game:...
    ------------------------------
    Player is in the house!
    Player joined the game
    ------------------------------

    QuitMessage works fine! :D
  7. Offline

    xZise

    dev.bukkit.org profile:
    xZise
    My Plugins
    Hmmm actually it doesn't. You have to cancel the event. This might be working.

    Fabian
  8. Offline

    Tahkeh

    (woops, just noticed I said to use false in the last post..don't actually do this. I thought you wanted to "disable" the "Clear-Join-Message")

    Try deleting your LoginMessage folder (transfer your .txts to a safe place first), then reload the server so it will create all new files.

    Edit: Also, there might be another plugin installed resetting the join message back. What plugins do you have?

    I'm a little confused. How would you cancel the event without another external plugin?
  9. Offline

    xZise

    dev.bukkit.org profile:
    xZise
    My Plugins
    event.setCanceled(true) ?

    But I appreachate if you avoid this event ;) I mean, if you need a command registered while runtime this is the only way, but for each other, the onCommand is working perfectly. Also as you could define different executors for each command, without a giant if statement.

    Fabian
  10. Offline

    Tahkeh

    Don't worry, in the new version, LoginMessage will be all up-to-date on the way it handles commands. ;)

    I'm going to add in some codes, too; however, with my current progress so far, I doubt I can make it to Thursday unless I can figure out how to use messages.yml. Plus, I want to make sure v0.7 is well documented because it's a lot more complicated.

    If you're wondering, my current roadblock is figuring out how to apply all the information in messages.yml to get who is going to trigger the message, and who is going to receive it. The cooldown and delay variables are easy, for they are one static int per message. With triggers and receivers, I can never predict what values will be in there. The only thing I can do is use if statements per value, which isn't really even an option.
  11. Offline

    xZise

    dev.bukkit.org profile:
    xZise
    My Plugins
    Which type do you now using? If you use the Configuration class you could use the Configuration.getStringList.

    For example:
    Code:
    Configuration c = new Configuration(new File(....));
    c.load(); // VERY important :D
    
    Map<String, ConfigurationNode> nodes = c.getNodes("Login");
    for (Entry<String, ConfigurationNode> entry : nodes.entrySet()) {
      String msgName = entry.getKey();
      ConfigurationNode msgNode = entry.getValue();
      List<String> recPlayers = msgNode.getStringList("recievers.user");
    }
    Now according to this post it should return for the first message simply: { "-Default" }

    Now as I love OOP, it is possible to make it more object orientated. For example you have an interface:
    Code:
    public interface Entry {
      boolean match(Player player);
    }
    
    public class Group implements Entry {
      public final String group;
      public final PermissionsHandler handler;
    
      public Group( ....
    
      }
    
      public boolean match(Player player) {
        // Something like this.... simply get all groups the player is in
        List<String> groups = this.handler.getPlayerGroups(player);
        // If the player is in this group here
        return groups.contains(this.group);
      }
    }
    
    public class User implements Entry {
      public final String user;
    
      public User(....
      }
    
      public boolean match(Player player) {
        return player.getName().equals(this.user);
      }
    }
    So then you read the list from above and make a big entry list:
    Code:
    List<Entry> recievers = new ArrayList<Entry>();
    for (String player : recPlayers) {
      recievers.add(new User(...));
    }
    // The rest for the meta/group...
    And then you simply could call match on each player and then knows, if the player gets the message.

    Fabian
    Tahkeh likes this.
  12. Offline

    MCrofl777

    Guys, Guys Guys! :D
    I got the problem!!!!
    It's the Plugin "FirstJoin"
    It creates a join-message too, and I can't disable the message from it. :(
    So, your Plugin isn't guilty :cool:
    Result: I'm gonna delete FirstJoin
    :D:D:D
  13. Offline

    Tahkeh

    @xZise Wow...I never thought of doing it like that. I was using the Configuration class's methods (like getStringList) and saving all that information to a new Map(type String, List<String>) to be called up with a different method. But this way is a lot more efficient!

    Thanks a lot for this, I could get v0.7 out a lot quicker because of you!

    @MCrofl777 Great that you found the culprit. ;) Don't worry about the loss of FirstJoin though, because I've already planned for LoginMessage to have a unique message for players logging in to the server for the first time.
  14. Offline

    Tahkeh

    Just wanted to let you know that I couldn't get much work on LoginMessage yesterday and the day before, because I was setting up my server to run on my old laptop with Arch Linux.

    And @xZise Everything you told me is working good, except there are no Permissions methods that return a list of groups, only arrays. I'm currently looking for a workaround to this, and if you have anything to share, I'd be very grateful. :D
  15. Offline

    xZise

    dev.bukkit.org profile:
    xZise
    My Plugins
    Hey :D Nice to help you! I'm looking forward to the new LoginMessage!

    As you read only the array/list this shouldn't be so difficult?
    Code:
    String[] grpNames = ....;
    for (String grp : grpNames) {
        if (grp.equals(this.group)) { // Maybe equalsIgnoreCase
            return true;
        }
    }
    return false;
    Unfortunately there is no “contains” in Java for arrays.

    Fabian
  16. Offline

    Tahkeh

    Very true... Without the contains method, you have to do what-should-be-unnecessary programming. Thanks for sharing that, though. :)
  17. Offline

    cyberdude

    dev.bukkit.org profile:
    cyberdudedk
    My Plugins
    Isn't the title of this thread wrong? All other plugin threads use a different title setup, according to the "standard" your title should be:
    [INFO] LoginMessage v0.6_61 - (more than just a) Custom MOTD [935]

    This thread title having a different setup is really annoying...
  18. Offline

    Tahkeh

    Does it really bother you so much? I'll fix it, but I think saying it's "really annoying" is pretty extreme. If you notice, LoginMessage was published back when hMod still existed, and at that time there weren't even any standards for new plugins. I focus more on making this plugin useful than making its title formatted properly.

    In fact, it's been like this for 5 months since the guidelines were created, so do you think it really mattered that much to anyone?
  19. Offline

    cyberdude

    dev.bukkit.org profile:
    cyberdudedk
    My Plugins
    Thank you for listening. Yes, maybe "really annoying" is a bit extreme, and I didn't notice the age of the plugin (Thread). I just found it rather unusual that other plugins can't be approved for small mistakes. Also the titles are used in the Plugin List, and this thread title being way off wasn't very cool. I am also writing an external application that uses Thread titles to extract bukkit build support, plugin name, and short description. I'm trying to take into account small differences, but I think this is the only plugin forum thread I have seen that was written in this order. I apologize for my use of words, but my case still stands, and I thank you for listening and fixing the thread title.
  20. Offline

    Tahkeh

    No problem. I've actually seen a few others do this too, though Jobs is the only one I can think of. Submissions seem to be evaluated in mysterious ways, much like on the Apple App Store. ;)

    Also, if this application is written in Java, there are a couple of methods you could use to get the CB version without needing to know its exact index on the string.
  21. Offline

    cyberdude

    dev.bukkit.org profile:
    cyberdudedk
    My Plugins
    :).. I'm using Regex to extract the various parts of the thread title. Category, Plugin Name, Plugin Version (If existing), short description (if existing), bukkit version.
    The last three things are written in so many different ways. Some use version numbers such as v. x.x.x, x.x.xa, Vx.x.x and as yours vx.x_xx, also sometimes the short description is there, sometimes it's not, some writes the bukkit version as [953] others [870-953] or [953-870] or [953~870] or even [953,908,870]. So no standardization makes this a pain to sort out, but I've created a Regex that currently will take most. I'm continuing to improve upon it when I encounter threads that I can not correctly the extract data from, I've also started to ask some people to make subtle changes to their titles (Politely, this time ;) ) when they are way off "standard".
  22. Offline

    Tahkeh

    @cyberdude Well cool, but I've never been good with regular expressions, so I can't really help you there... :p
  23. Offline

    cyberdude

    dev.bukkit.org profile:
    cyberdudedk
    My Plugins
  24. Offline

    jor956

    I justd reinstalled loginmessage, along with essentials, and now all I get is the normal login message and no MOTD at all, just a line replacing it, is there any way I can fix this? I don't know what happened.
    Thanks.
  25. Offline

    Tahkeh

    Make sure you don't have anything under the "motd" section of the Essentials config.
  26. Offline

    jor956

    I fixed it, now I only have one problem, when somebody joins, it shows above the login message just a line with "-" in it, any way to fix that?
  27. Offline

    Tahkeh

    What is your Essentials configuration?
  28. Offline

    jor956

    Code:
    ############################################################
    #  ------------------------------------------------------  #
    # |                       Notes                          | #
    #  ------------------------------------------------------  #
    ############################################################
    
    # If you want to use special characters in this document, such as accented letters, you MUST save the file as UTF-8, not ANSI.
    # If you receive an error when Essentials loads, ensure that:
    #   - No tabs are present: YAML only allows spaces
    #   - Indents are correct: YAML heirarchy is based entirely on indentation
    #   - You have "escaped" all apostrophes in your text: If you want to write "don't", for example, write "don''t" instead (note the doubled apostrphe)
    #   - List items are prefixed with a hyphen and indented:
    #       lists:
    #         - look like this
    #       not:
    #       - like this
    #   - Text with symbols is enclosed in single or double quotation marks
    #   - CraftBukkit and Permissions have been updated: CraftBukkit and Essentials almost always line up, but sometimes other plugins fall behind CraftBukkit's multiple daily updates
    #   - You have saved the document as UTF-8, NOT the default, ANSI
        
    ############################################################
    #  ------------------------------------------------------  #
    # |                 Essentials (Global)                  | #
    #  ------------------------------------------------------  #
    ############################################################
    
    # A color code between 0-9 or a-f. Set to 'none' to disable.
    ops-name-color: 'c'
    
    # The character(s) to prefix all nicknames, so that you know they are not true usernames.
    nickname-prefix: '~'
    
    # The delay, in seconds, required between /home, /tp, etc.
    teleport-cooldown: 0
    
    # The delay, in seconds, before a user actually teleports.  If the user moves or gets attacked in this timeframe, the teleport never occurs.
    teleport-delay: 0
    
    # The delay, in seconds, required between /heal attempts
    heal-cooldown: 60
    
    # The number of items given if the quantity parameter is left out in /item or /give.
    default-stack-size: 64
    
    # What to prevent from /i /give
    # e.g item-spawn-blacklist: 46,11,10
    item-spawn-blacklist:
    
    # Set this to true if you want permission based item spawn rules
    # Permissions:
    #  - essentials.itemspawn.item-all
    #  - essentials.itemspawn.item-[itemname]
    #  - essentials.itemspawn.item-[itemid]
    #  - essentials.give.item-all
    #  - essentials.give.item-[itemname]
    #  - essentials.give.item-[itemid]
    permission-based-item-spawn: false
    
    # Whether or not to reclaim memory on player logout; this is technical, and should only be changed under special circumstances.
    # This generally increases server stability unless very specific runtime configurations are used.
    # HOWEVER, it is known to cause lag upon users logging OUT, so beware!
    reclaim-onlogout: false
    
    # Should primitive spawn protection be enabled?  For most servers, this should be flase; it is better to use a third-party plugin to protect it.
    spawn-protection: false
    
    # Nether settings (switch between worlds with "/world nether" and "/world normal")
    # Sets whether the nether system is enabled, what folder to save the world in, and whether portals should teleport players between worlds.
    nether:
      enabled: false
      folder: nether
      portals-enabled: false
      generate-exit-portals: false
      ratio: 16
    
    # Mob limit on spawnmob
    spawnmob-limit: 15
    
    #Shall we notify users when using /lightning
    warn-on-smite: true
    
    # The message of the day, displayed on connect and by typing /motd.
    motd:
    # The server rules, available by typing /rules
    rules:
      - 'No griefing, block spamming'
      - 'No racism'
      - 'No rude builds or swastikas'
      - 'No unrealistic builds or pixel art'
      - 'No hacks, flymod, xray'
      - 'No advertising'
      - 'No rude skins or swastikas'
      - 'Do not ask to be a staff member'
      - 'Make an application for you town to be official'
      - 'Only staff can make Nether portals'
      - 'Do not kill the same faction'
    
    # When a command conflicts with another plugin, by default, Essentials will try to force the OTHER plugin to take
    # priority.  If a command is in this list, Essentials will try to give ITSELF priority.  This does not always work:
    # usually whichever plugin was updated most recently wins out.  However, the full name of the command will always work.
    # For example, if WorldGuard and Essentials are both enabled, and WorldGuard takes control over /god, /essentials:god
    # will still map to Essentials, whereas it might normally get forced upon WorldGuard.  Commands prefixed with an "e",
    # such as /egod, will always grant Essentials priority.
    # We should try to take priority over /god.  If this doesn't work, use
    # /essentials:god or /egod.  If god is set using WorldGuard, use /ungod to remove then use whichever you see fit.
    overridden-commands:
      - god
    
    # Disabled commands will be completelly unavailable on the server.
    disabled-commands:
     - nick
    
    # Restricted commands will only be available to ops.
    # These will have NO EFFECT if you have Permissions installed!
    # These are here only if you want something simpler than Permissions.
    restricted-commands:
      - bigtree
      - item
      - give
      - heal
      - plugin
      - time
      - top
      - tp
      - tphere
      - tree
      - setspawn
      - antioch
      - kick
      - ban
      - unban
      - top
      - jump
      - tpo
      - tppos
      - tpohere
      - economy
      - setwarp
      - delwarp
      - essentials
      - gc
      - spawnmob
      - broadcast
      - burn
      - ext
      - kill
      - ping
      - banip
      - unban
      - mute
      - kick
      - kickall
      - unbanip
      - togglejail
      - setjail
      - eco.loan
    
    # Note: All items MUST be followed by a quantity!
    # Times are measured in seconds.
    kits:
      tools:
        delay: 10
        items:
          - 277 1
          - 278 1
          - 279 1
    
    # Disable all signs
    signs-disabled: false
    
    # Backup runs a command while saving is disabled
    backup:
      # Interval in minutes
      interval: 60
      # Add a command that backups your data, e.g.
      # command: 'rdiff-backup World1 backups/World1'
    
    # Set this true to enable permission per warp.
    per-warp-permission: false
    
    # Sort output of /list command by groups
    sort-list-by-groups: true
    
    # More output to the console
    debug: true
    
    # Set the locale for all messages
    # If you don't set this, the default locale of the server will be used.
    #locale: de_DE
    
    ############################################################
    #  ------------------------------------------------------  #
    # |                   EssentialsHome                     | #
    #  ------------------------------------------------------  #
    ############################################################
    
    # When users die, should they respawn at their homes, instead of the spawnpoint?
    respawn-at-home: false
    
    # When a user interacts with a bed, should their home be set to that location?
    # If you enable this and remove default user access to the /sethome command, you can make beds the only way for players to set their home location.
    bed-sethome: false
    
    #if no home is set send you to spawn when /home is used
    spawn-if-no-home: false
     
    ############################################################
    #  ------------------------------------------------------  #
    # |                   EssentialsEco                      | #
    #  ------------------------------------------------------  #
    ############################################################
    
    # Defines the balance with which new players begin.  Defaults to 0.
    starting-balance: 0
    
    # worth-# defines the value of an item when it is sold to the server via /sell.
    # These are now defined in worth.yml
    
    # Defines the cost to use the given commands PER USE
    command-costs:
      # /example costs $1000 PER USE
      #example: 1000
      # /kit tools costs $1500 PER USE
      #kit-tools: 1500
    
    # Set this to a currency symbol you want to use.
    currency-symbol: '$'
    
    ############################################################
    #  ------------------------------------------------------  #
    # |                   EssentialsHelp                     | #
    #  ------------------------------------------------------  #
    ############################################################
    
    #Show other plugins commands in help
    non-ess-in-help: true
    
    ############################################################
    #  ------------------------------------------------------  #
    # |                   EssentialsChat                     | #
    #  ------------------------------------------------------  #
    ############################################################
    
    # If EssentialsChat is installed, this will define how far a player's voice travels, in blocks.  Set to 0 to make all chat global.
    # Note that users with the "essentials.chat.spy" permission will hear everything, regardless of this setting.
    # Users with essentials.chat.shout can override this by prefixing text with an exclamation mark (!)
    # Or with essentials.chat.question can override this by prefixing text with a question mark (?)
    chat:
      radius: 0
    
      # If set to the default chat format which "should" be compatible with ichat.
      format: '<{DISPLAYNAME}> {MESSAGE}'
      #format: '
  29. Offline

    Tahkeh

    @jor956 Odd. What does LoginMessage.txt look like? And what other plugins do you have installed?
  30. Offline

    jor956

    Wait, it only shows on the first login, it's the welcome message from essentials I think, but it didn't do that without LoginMessage?
  31. Offline

    Tahkeh

    So are you saying that Essentials is causing the "-", but only with LoginMessage? Could you give me a screenshot? And what happens when you remove Essentials?
  32. Offline

    jor956

    I can't give you a screenshot right now because no new players are joining since our server is staff-only for a few days; but everything works, it just has the "-" above the login, and when essentials is removed I have no idea what happens for the same reason.

Share This Page