fix: improve auto complete for triggerblock

This commit is contained in:
Sekwah 2023-12-18 02:13:35 +00:00
parent fd0f011878
commit 6d4fd07cc2
1 changed files with 17 additions and 1 deletions

View File

@ -9,7 +9,9 @@ import com.sekwah.advancedportals.core.util.Lang;
import com.sekwah.advancedportals.core.warphandler.ActivationData;
import com.sekwah.advancedportals.core.warphandler.Tag;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class TriggerBlockTag implements Tag.AutoComplete {
@ -43,8 +45,22 @@ public class TriggerBlockTag implements Tag.AutoComplete {
@Override
public List<String> autoComplete(String argData) {
boolean endsWithComma = argData.endsWith(",");
String[] items = argData.split(",");
Set<String> existingItems = Arrays.stream(items, 0, endsWithComma ? items.length : items.length - 1)
.map(String::trim)
.collect(Collectors.toSet());
String partialInput = endsWithComma ? "" : items[items.length - 1].trim();
String baseString = endsWithComma ? argData : argData.substring(0, argData.lastIndexOf(",") + 1);
return serverContainer.getTriggerBlocks().stream()
.filter(s -> s.startsWith(argData))
// Remove already listed items
.filter(s -> !existingItems.contains(s))
// Remove items that don't match the currently typed input
.filter(s -> s.startsWith(partialInput))
// Remap so the auto completes actually show
.map(s -> baseString + s)
.collect(Collectors.toList());
}
}