@@ -0,0 +1,2791 @@
+package me.expdev.expcommand.events;%0A%0Aimport me.expdev.expcommand.*;%0Aimport org.bukkit.event.player.*;%0Aimport net.md_5.bungee.api.*;%0Aimport java.text.*;%0Aimport org.bukkit.entity.*;%0Aimport org.bukkit.configuration.*;%0Aimport java.util.*;%0Aimport org.bukkit.event.*;%0A%0Apublic class CommandPreProcessListener implements Listener%0A%7B%0A    ExpCommand plugin;%0A    %0A    public CommandPreProcessListener(final ExpCommand instance) %7B%0A        this.plugin = instance;%0A    %7D%0A    %0A    @EventHandler(priority = EventPriority.HIGHEST)%0A    public void onCommand(final PlayerCommandPreprocessEvent event) %7B%0A        final Player p = event.getPlayer();%0A        if (p.isOp()) %7B%0A            return;%0A        %7D%0A        final String message = event.getMessage().toLowerCase();%0A        final String%5B%5D command = message.split(%22 %22);%0A        String permission = %22%22;%0A        int level = 0;%0A        final ConfigurationSection section = this.plugin.getCfg().getConfig().getConfigurationSection(%22commands%22);%0A        for (String s : section.getKeys(false)) %7B%0A            s = s.toLowerCase();%0A            if (command%5B0%5D.equalsIgnoreCase(%22/%22 + s)) %7B%0A                permission = this.plugin.getCfg().getConfig().getString(%22commands.%22 + s + %22.permission%22).toLowerCase();%0A                if (!p.hasPermission(permission)) %7B%0A                    event.setCancelled(true);%0A                    p.sendMessage(ChatColor.DARK_GRAY + %22%5B%22 + ChatColor.DARK_RED + ChatColor.BOLD + %22!%22 + ChatColor.DARK_GRAY + %22%5D %22 + ChatColor.RED + %22You don't have permission to do that!%22);%0A                    return;%0A                %7D%0A                level = this.plugin.getCfg().getConfig().getInt(%22commands.%22 + s + %22.level%22);%0A                if (p.getLevel() %3C level) %7B%0A                    event.setCancelled(true);%0A                    p.sendMessage(ChatColor.DARK_GRAY + %22%5B%22 + ChatColor.DARK_RED + ChatColor.BOLD + %22!%22 + ChatColor.DARK_GRAY + %22%5D %22 + ChatColor.RED + %22You%22 + ChatColor.GRAY + %22 have %22 + ChatColor.RED + NumberFormat.getNumberInstance(Locale.US).format(p.getLevel()) + ChatColor.GRAY + %22 level(s) and need %22 + ChatColor.RED + NumberFormat.getNumberInstance(Locale.US).format(level - p.getLevel()) + ChatColor.GRAY + %22 more level(s) to perform that command (%22 + ChatColor.RED + command%5B0%5D + ChatColor.GRAY + %22).%22);%0A                %7D%0A                else %7B%0A                    p.sendMessage(ChatColor.DARK_GRAY + %22%5B%22 + ChatColor.DARK_GREEN + ChatColor.BOLD + %22!%22 + ChatColor.DARK_GRAY + %22%5D %22 + ChatColor.GREEN + %22You%22 + ChatColor.GRAY + %22 paid %22 + ChatColor.GREEN + NumberFormat.getNumberInstance(Locale.US).format(level) + %22%22 + ChatColor.GRAY + %22 level(s) to execute that command (%22 + ChatColor.GREEN + command%5B0%5D + ChatColor.GRAY + %22).%22);%0A                    p.setLevel(p.getLevel() - level);%0A                %7D%0A            %7D%0A        %7D%0A    %7D%0A%7D%0A

Create CommandPreProcessListener.java