Implementing chat plugin in main method.

Discussion in 'Plugin Development' started by CrazyYoungBro, Jun 17, 2016.

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

    CrazyYoungBro

    Hello,
    I am making a plugin in which a player can level up using /level <player> <level>
    I also needed to add the level prefix to chat so I did the same but in another class.
    How can I add the prefix class to the main class so that it runs as needed.
    Here is the main class:
    Code:
    package me.arihant.levelup;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class LevelUp extends JavaPlugin{
       
        public void onEnable() {
            Bukkit.getServer().getLogger().info("LevelUp has been enabled!");
            Bukkit.getPluginManager().registerEvents(new LevelUpEvents(), this);
        }
    
        public void onDisable() {
            Bukkit.getServer().getLogger().info("LevelUp has been disabled!");
            Bukkit.getPluginManager().registerEvents(new LevelUpEvents(), this);
        }
       
        @SuppressWarnings("null")
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
           
            if(!(sender instanceof Player)) {
                sender.sendMessage(ChatColor.GREEN + "This command is only for players!");
            }
           
            Player player = (Player) sender;
           
            if(cmd.getName().equalsIgnoreCase("level")) {
                if(args.length == 0) {
                    player.sendMessage(ChatColor.RED + "Usage: /<command> <player> <level>");
                }
                if(args.length == 1) {
                    player.sendMessage(ChatColor.RED + "Please specify a level!");
                }
                @SuppressWarnings("deprecation")
                Player target = Bukkit.getServer().getPlayer(args[0]);
               
                if(target == null) {
                    player.sendMessage(ChatColor.RED + "Could not find " + target.getName() + " !");
                }
               
                if(target.getLevel() >= 100) {
                    target.setLevel(0);
                }
                else {
                    String args2 = args[1];
                    int level = Integer.parseInt(args2);
                    target.setLevel(level);
                }
               
            }
           
            return true;
        }
    }
    
    Here is the other class:
    Code:
    package me.arihant.levelup;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    
    
    public class LevelUpEvents implements Listener{
       
        public void onPlayerKill(PlayerDeathEvent event) {
           
            Player killer = (Player) event.getEntity().getKiller();
       
            killer.giveExp(1);
                   
        }
    
       
        public static String memberPrefix = "§8[§7User§8]§7";
        public static String ultraPrefix = "§8[§b§lUltra§8]§7";
        public static String megaPrefix = "§8[§a§lMega§8]§7";
        public static String omegaPrefix = "§8[§c§lOmega§8]§7";
        public static String deltaPrefix = "§8[§f§lDel§bta§8]§7";
        public static String traineePrefix = "§3§lTrainee§7";
        public static String modPrefix = "§6§lMod§7";
        public static String srmodPrefix = "§6§lSr.Mod§7";
        public static String adminPrefix = "§4§lAdmin§7";
        public static String leaderPrefix = "§4§lLeader§7";
        public static String ownerPrefix = "§4§lOwner§7";
        public static String builderPrefix = "§9§lBuilder§7";
        public static String youtubePrefix = "§c§lYoutube§7";
       
       
       
        public void onChat(AsyncPlayerChatEvent e) {
           
            Player player = (Player) e.getPlayer();
            String message = e.getMessage();
            int x = player.getLevel();
            String level = Integer.toString(x);
           
            if(player.hasPermission("up.member")) {
                e.setFormat(level + " " + memberPrefix + player.getName() + "§8§l>§r" + message );
            }
            else if(player.hasPermission("up.ultra")) {
                e.setFormat(level + " " + ultraPrefix + player.getName() + "§8§l>§r" + message );
            }
            else if(player.hasPermission("up.mega")) {
                e.setFormat(level + " " + megaPrefix + player.getName() + "§8§l>§r" + message );
            }
            else if(player.hasPermission("up.omega")) {
                e.setFormat(level + " " + omegaPrefix + player.getName() + "§8§l>§r" + message );
            }
            else if(player.hasPermission("up.delta")) {
                e.setFormat(level + " " + deltaPrefix + player.getName() + "§8§l>§6" + message );
            }
            else if(player.hasPermission("up.trainee")) {
                e.setFormat(level + " " + traineePrefix + player.getName() + "§3§l>§b" + message );
            }
            else if(player.hasPermission("up.mod")) {
                e.setFormat(level + " " + modPrefix + player.getName() + "§6§l>§b" + message );
            }
            else if(player.hasPermission("up.srmod")) {
                e.setFormat(level + " " + srmodPrefix + player.getName() + "§4§l>§b" + message );
            }
            else if(player.hasPermission("up.admin")) {
                e.setFormat(level + " " + adminPrefix + player.getName() + "§4§l>§b" + message );
            }
            else if(player.hasPermission("up.leader")) {
                e.setFormat(level + " " + leaderPrefix + player.getName() + "§4§l>§b" + message );
            }
            else if(player.hasPermission("up.owner")) {
                e.setFormat(level + " " + ownerPrefix + player.getName() + "§4§l>§b" + message );
            }
            else if(player.hasPermission("up.builder")) {
                e.setFormat(level + " " + builderPrefix + player.getName() + "§9§l>§r" + message );
            }
            else if(player.hasPermission("up.youtube")) {
                e.setFormat(level + " " + youtubePrefix + player.getName() + "§c§l>§r" + message );
            }
           
           
        }
       
    
    
    }
    
    
     
  2. Offline

    webbhead

    What do you mean Prefix Class you don't have a class by that name... Also return statements are needed for all those checks in your command.
     
  3. Offline

    Zombie_Striker

    Bukkit logs your plugins for you. Remove this line.

    You are registering a class when the server shutsdown. Since you should remove that line, and the logger, you should simply remove the entire method.

    Don't suppress null warnings. They are there for a reason. Fix whatever is null, and remove this tag.

    You forgot to return. Not returning means it will check if the player is not null, and then cast that non--player to a player, which will throw a CCE.

    Also, you forgot to return on these lines too.

    Return true only when it worked the way it should. Return false if something failed.

    1. You forgot the @EventHandler tags
    2. The killer can be null. Null check before getting the killer
    3. The killer is not always a player. You need to check if it is a player first before casting or else you will receive a CCE.
     
    CrazyYoungBro likes this.
  4. Offline

    CrazyYoungBro

    The LevelUpEvents class contains all the events including AsyncChatEvent.
    Thanks, I fixed all of that but can you tell me how to implement the chat in the main method and how to cancel natural exp level change?
     
Thread Status:
Not open for further replies.

Share This Page