Skip to content

Commit ac4c3a7

Browse files
zkiteflyGlavo
andauthored
模组管理支持搜索根据更多数据搜索内容 (#3230)
Co-authored-by: Glavo <zjx001202@gmail.com>
1 parent f95ebe2 commit ac4c3a7

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPageSkin.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
import org.jackhuang.hmcl.util.io.FileUtils;
6363
import org.jackhuang.hmcl.util.io.NetworkUtils;
6464
import org.jetbrains.annotations.NotNull;
65+
import org.jetbrains.annotations.Nullable;
6566

6667
import java.nio.file.FileSystem;
6768
import java.nio.file.Files;
@@ -248,23 +249,30 @@ private void search() {
248249
} else {
249250
listView.getItems().clear();
250251

251-
Predicate<String> predicate;
252+
Predicate<@Nullable String> predicate;
252253
if (queryString.startsWith("regex:")) {
253254
try {
254255
Pattern pattern = Pattern.compile(queryString.substring("regex:".length()));
255-
predicate = s -> pattern.matcher(s).find();
256+
predicate = s -> s != null && pattern.matcher(s).find();
256257
} catch (Throwable e) {
257258
LOG.warning("Illegal regular expression", e);
258259
return;
259260
}
260261
} else {
261262
String lowerQueryString = queryString.toLowerCase(Locale.ROOT);
262-
predicate = s -> s.toLowerCase(Locale.ROOT).contains(lowerQueryString);
263+
predicate = s -> s != null && s.toLowerCase(Locale.ROOT).contains(lowerQueryString);
263264
}
264265

265266
// Do we need to search in the background thread?
266267
for (ModInfoObject item : getSkinnable().getItems()) {
267-
if (predicate.test(item.getModInfo().getFileName())) {
268+
LocalModFile modInfo = item.getModInfo();
269+
if (predicate.test(modInfo.getFileName())
270+
|| predicate.test(modInfo.getName())
271+
|| predicate.test(modInfo.getVersion())
272+
|| predicate.test(modInfo.getGameVersion())
273+
|| predicate.test(modInfo.getId())
274+
|| predicate.test(Objects.toString(modInfo.getModLoaderType()))
275+
|| predicate.test((item.getMod() != null ? item.getMod().getDisplayName() : null))) {
268276
listView.getItems().add(item);
269277
}
270278
}

0 commit comments

Comments
 (0)