mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-11-04 03:03:43 +01:00 
			
		
		
		
	Tab completion
This commit is contained in:
		@@ -11,6 +11,7 @@ import org.bukkit.command.TabCompleter;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.util.StringComparison;
 | 
			
		||||
import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -46,13 +47,22 @@ public class BukkitCommand implements CommandExecutor, TabCompleter {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        final List<String> tabOptions = new ArrayList<>();
 | 
			
		||||
        final String[] commands = new String[MainCommand.subCommands.size()];
 | 
			
		||||
        for (int x = 0; x < MainCommand.subCommands.size(); x++) {
 | 
			
		||||
            commands[x] = MainCommand.subCommands.get(x).cmd;
 | 
			
		||||
        }
 | 
			
		||||
        String best = new StringComparison(strings[0], commands).getBestMatch();
 | 
			
		||||
        tabOptions.add(best);
 | 
			
		||||
        System.out.print("TAB OPTIONS");
 | 
			
		||||
        final String arg = strings[0].toLowerCase();
 | 
			
		||||
        for (final SubCommand cmd : MainCommand.subCommands) {
 | 
			
		||||
            if (cmd.permission.hasPermission(player)) {
 | 
			
		||||
                if (cmd.cmd.startsWith(arg)) {
 | 
			
		||||
                    tabOptions.add(cmd.cmd);
 | 
			
		||||
                } else if (cmd.alias.size() > 0 && cmd.alias.get(0).startsWith(arg)) {
 | 
			
		||||
                    tabOptions.add(cmd.alias.get(0));
 | 
			
		||||
            if (!cmd.cmd.equalsIgnoreCase(best)) {
 | 
			
		||||
                if (cmd.permission.hasPermission(player)) {
 | 
			
		||||
                    if (cmd.cmd.startsWith(arg)) {
 | 
			
		||||
                        tabOptions.add(cmd.cmd);
 | 
			
		||||
                    } else if (cmd.alias.size() > 0 && cmd.alias.get(0).startsWith(arg)) {
 | 
			
		||||
                        tabOptions.add(cmd.alias.get(0));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -78,10 +78,12 @@ public class StringComparison {
 | 
			
		||||
     */
 | 
			
		||||
    public static int compare(final String s1, final String s2) {
 | 
			
		||||
        int distance = StringUtils.getLevenshteinDistance(s1, s2);
 | 
			
		||||
        if (s2.contains(s1) || s2.contains(s1)) {
 | 
			
		||||
        if (s2.contains(s1)) {
 | 
			
		||||
            distance -= (Math.min(s1.length(), s2.length()));
 | 
			
		||||
        }
 | 
			
		||||
        if (s2.startsWith(s1)) {
 | 
			
		||||
            distance -= 4;
 | 
			
		||||
        }
 | 
			
		||||
//        distance += Math.abs(s1.length() - s2.length());
 | 
			
		||||
        return distance;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user