package net.minecraft.command.completion; import java.util.Set; import net.minecraft.command.parser.CompletionParser.CompletionData; public class TabCompletionData { public final String name; public final int startIndex; public final int endIndex; public final String replacement; public final int newCursorIndex; public TabCompletionData(final String name, final int startIndex, final int endIndex, final String replacement, final int newCursorIndex) { this.name = name; this.startIndex = startIndex; this.endIndex = endIndex; this.replacement = replacement; this.newCursorIndex = newCursorIndex; } public static final void addToSet(final TCDSet tcDataSet, final int startIndex, final CompletionData cData, final ITabCompletion tc) { final Weighted tcData = tc.getMatchData(startIndex, cData); if (tcData != null) tcDataSet.add(tcData); } public static final void addToSet(final TCDSet tcDataSet, final int startIndex, final CompletionData cData, final Set<? extends ITabCompletion> tcSet) { for (final ITabCompletion tc : tcSet) addToSet(tcDataSet, startIndex, cData, tc); } public static final void addToSet(final Set<Weighted> tcDataSet, final int startIndex, final CompletionData cData, final Set<? extends ITabCompletion> tcSet) { for (final ITabCompletion tc : tcSet) addToSet(tcDataSet, startIndex, cData, tc); } public static final void addToSet(final Set<Weighted> tcDataSet, final int startIndex, final CompletionData cData, final ITabCompletion tc) { final Weighted tcData = tc.getMatchData(startIndex, cData); if (tcData != null) tcDataSet.add(tcData); } public static class Weighted extends TabCompletionData implements Comparable<Weighted> { public final double weight; public Weighted(final String name, final int startIndex, final int endIndex, final String replacement, final int newCursorIndex, final double weight) { super(name, startIndex, endIndex, replacement, newCursorIndex); this.weight = weight; } @Override public int compareTo(final Weighted tcData) { final int ret = Double.compare(tcData.weight, this.weight); return ret != 0 ? ret : this.name.compareToIgnoreCase(tcData.name); } @Override public boolean equals(final Object obj) { return obj instanceof Weighted ? this.compareTo((Weighted) obj) == 0 : false; } @Override public int hashCode() { return this.name.hashCode(); } } }