Solved Login/Logout messages

Discussion in 'Plugin Development' started by random_username, Sep 30, 2013.

Thread Status:
Not open for further replies.
  1. Offline

    random_username

    Hello, I was trying to make a plugin in which I could customize Login/logout messages. This is what I tried:
    Code:java
    1. @EventHandler
    2. public void onPlayerJoin(PlayerJoinEvent event){
    3. Player player = event.getPlayer();
    4. event.setJoinMessage(getConfig().getString("OnJoin").replace("%p", player.getName()).replace("&", "§"));
    5. }
    6.  
    7. @EventHandler
    8. public void onPlayerQuit(PlayerQuitEvent event){
    9. Player player = event.getPlayer();
    10. event.setQuitMessage(getConfig().getString("OnLeave").replace("%p", player.getName()).replace("&", "§"));
    11. }

    For some reason, it isn't working. How can I make this work? Also, how can I make this replace the yellow "<name> Joined/left the game!" Messages? Thanks for the help :)
     
  2. Offline

    TheEyeMonster

    Add to your mainclass onEnable:

    getServer().getPluginManager().registerEvents(new JOIN/QUIT_CLASSNAME(), this);
     
  3. Offline

    MrSparkzz

  4. Offline

    random_username

    what do you mean with register? Sorry, Im really new to plugin development.
     
  5. Offline

    TheEyeMonster

    Ninja. xD
     
  6. Offline

    MrSparkzz

    You need to go into your onEnable() and add this line of code
    Well if your event is in the same class do this
    Code:java
    1.  
    2. getServer().getPluginManager().registerEvents(this, this);
    3.  

    If your event is in a separate class do this
    Code:java
    1.  
    2. getServer().getPluginManager().registerEvents(new EventClass(), this);
    3.  
     
  7. Offline

    random_username

    So it would be like this?

    Code:java
    1. @Override
    2. public void onDisable() {
    3. PluginDescriptionFile pdfFile = this.getDescription();
    4. this.logger.info(pdfFile.getName() + " Version " + pdfFile.getVersion() + " Has been Disabled.");
    5. }
    6.  
    7. @Override
    8. public void onEnable() {
    9. PluginDescriptionFile pdfFile = this.getDescription();
    10. getServer().getPluginManager().registerEvents((Listener) this, this);
    11. this.logger.info(pdfFile.getName() + " Version " + pdfFile.getVersion() + " Has been Enabled.");
    12. getConfig().options().copyDefaults(true);
    13. this.saveDefaultConfig();
    14. }
    15.  
    16. @EventHandler
    17. public void onPlayerJoin(PlayerJoinEvent event){
    18. Player player = event.getPlayer();
    19. event.setJoinMessage(getConfig().getString("OnJoin").replace("%p", player.getName()).replace("&", "§"));
    20. }
    21.  
    22. @EventHandler
    23. public void onPlayerQuit(PlayerQuitEvent event){
    24. Player player = event.getPlayer();
    25. event.setQuitMessage(getConfig().getString("OnLeave").replace("%p", player.getName()).replace("&", "§"));
    26. }
     
  8. Offline

    MrSparkzz

    random_username
    Oh and to fix your problem with the replacement thing, do this
    Code:java
    1.  
    2. event.setJoinMessage(getConfig().getString("OnJoin").replaceAll("%p", player.getName()).replaceAll("&", "\u00A7");
    3.  

    The first replaceAll() will replace %p with the player's name and the second replaceAll() will replace all color codes.
     
  9. Offline

    TheEyeMonster

    My main class looks like this:

    Code:
    package com.yourname.plugin;
     
    import java.util.logging.Logger;
     
    import org.bukkit.plugin.java.JavaPlugin;
     
    public final class Main extends JavaPlugin {
        public final Logger logger = Logger.getLogger("Minecraft");
        public static Main plugin;
       
        @Override
        public void onEnable() {
        getLogger().info("Has been enabled! Developed by TheEyeMonster!");
        getServer().getPluginManager().registerEvents(new EVENT CLASSNAME HERE(), this);
        }
        @Override
        public void onDisable() {
            getLogger().info("Has been disabled! Developed by TheEyeMonster!");
        }
     
    }
     
  10. Offline

    MrSparkzz

    random_username
    Try it, if it gives an error post it here. I haven't worked with events for a very long time.

    TheEyeMonster
    He has his events in his main class, so the way you did it wont work for him.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 4, 2016
  11. Offline

    random_username

    Okay, I tried:

    Code:java
    1. @Override
    2. public void onDisable() {
    3. PluginDescriptionFile pdfFile = this.getDescription();
    4. this.logger.info(pdfFile.getName() + " Version " + pdfFile.getVersion() + " Has been Disabled.");
    5. }
    6.  
    7. @Override
    8. public void onEnable() {
    9. PluginDescriptionFile pdfFile = this.getDescription();
    10. getServer().getPluginManager().registerEvents((Listener) this, this);
    11. this.logger.info(pdfFile.getName() + " Version " + pdfFile.getVersion() + " Has been Enabled.");
    12. getConfig().options().copyDefaults(true);
    13. this.saveDefaultConfig();
    14. }
    15.  
    16. @EventHandler
    17. public void onPlayerJoin(PlayerJoinEvent event){
    18. Player player = event.getPlayer();
    19. event.setJoinMessage(getConfig().getString("OnJoin").replace("%p", player.getName()).replace("&", "§"));
    20. }
    21.  
    22. @EventHandler
    23. public void onPlayerQuit(PlayerQuitEvent event){
    24. Player player = event.getPlayer();
    25. event.setQuitMessage(getConfig().getString("OnLeave").replace("%p", player.getName()).replace("&", "§"));
    26. }


    And now I am getting this error on the console:
    Code:
    java.lang.ClassCastException: me.Kait18.EnstopiaCore.EnstopiaCore cannot be cast
    to org.bukkit.event.Listener
            at me.Kait18.EnstopiaCore.EnstopiaCore.onEnable(EnstopiaCore.java:31)
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:457)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:382)
            at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugin(CraftServer.jav
    a:286)
            at org.bukkit.craftbukkit.v1_6_R3.CraftServer.enablePlugins(CraftServer.
    java:268)
            at net.minecraft.server.v1_6_R3.MinecraftServer.l(MinecraftServer.java:3
    21)
            at net.minecraft.server.v1_6_R3.MinecraftServer.f(MinecraftServer.java:2
    98)
            at net.minecraft.server.v1_6_R3.MinecraftServer.a(MinecraftServer.java:2
    58)
            at net.minecraft.server.v1_6_R3.DedicatedServer.init(DedicatedServer.jav
    a:165)
            at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java
    :399)
            at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:5
    83)
    15:56:51 [INFORMACI╙N] [GroupManager] Enabling GroupManager v2.0 (2.11.1) (Phoen
    ix)
    How can I fix this? :)
     
  12. Offline

    MrSparkzz

    random_username
    On line 31 of your Main class, there's an error (probably the code I gave you xD). (in your onEnable() method).
     
  13. Offline

    random_username

    yup, it is that line, what can i do to fix it?
     
  14. Offline

    MrSparkzz

    random_username
    try replacing that line with this
    Code:java
    1.  
    2. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    3.  
     
  15. Offline

    nisovin

    You should only use replaceAll() if you're using regular expressions. Otherwise just use replace().
     
  16. Offline

    MrSparkzz

    nisovin
    Why? Whenever I do replace() and I have more than one variable that needs to be replaced, it never works. replaceAll() always works for me. Or I should say used to. I've taken a much more advanced route lately.
     
  17. Offline

    random_username

    should I let the plugin implement listener or cast it to listener? (thats what eclipse says, as there is an error in "registerEvents")
     
  18. Offline

    nisovin

    The replace() method works fine. Using replaceAll() will do a regex replace, which can be slower and is unnecessary when you just need a simple text replacement.
    If your plugin class is also your listener, then it should implement Listener, yes.
     
  19. Offline

    random_username

Thread Status:
Not open for further replies.

Share This Page