feat(download): modpack search chinese words.

This commit is contained in:
huanghongxun
2022-05-05 23:31:10 +08:00
parent 71f13b24cb
commit 3766491c28
14 changed files with 632 additions and 40 deletions

View File

@@ -25,6 +25,16 @@ import java.util.stream.Stream;
public interface RemoteModRepository {
enum Type {
MOD,
MODPACK,
RESOURCE_PACK,
WORLD,
CUSTOMIZATION
}
Type getType();
enum SortType {
DATE_CREATED,
POPULARITY,

View File

@@ -40,13 +40,20 @@ import static org.jackhuang.hmcl.util.Pair.pair;
public final class CurseForgeRemoteModRepository implements RemoteModRepository {
private static final String PREFIX = "https://addons-ecs.forgesvc.net";
private final Type type;
private final int section;
public CurseForgeRemoteModRepository(int section) {
private CurseForgeRemoteModRepository(Type type, int section) {
this.type = type;
this.section = section;
}
@Override
public Type getType() {
return type;
}
public List<CurseAddon> searchPaginated(String gameVersion, int category, int pageOffset, int pageSize, String searchFilter, int sort) throws IOException {
String response = NetworkUtils.doGet(new URL(NetworkUtils.withQuery(PREFIX + "/api/v2/addon/search", mapOf(
pair("categoryId", Integer.toString(category)),
@@ -158,11 +165,11 @@ public final class CurseForgeRemoteModRepository implements RemoteModRepository
public static final int SECTION_UNKNOWN2 = 4979;
public static final int SECTION_UNKNOWN3 = 4984;
public static final CurseForgeRemoteModRepository MODS = new CurseForgeRemoteModRepository(SECTION_MOD);
public static final CurseForgeRemoteModRepository MODPACKS = new CurseForgeRemoteModRepository(SECTION_MODPACK);
public static final CurseForgeRemoteModRepository RESOURCE_PACKS = new CurseForgeRemoteModRepository(SECTION_RESOURCE_PACK);
public static final CurseForgeRemoteModRepository WORLDS = new CurseForgeRemoteModRepository(SECTION_WORLD);
public static final CurseForgeRemoteModRepository CUSTOMIZATIONS = new CurseForgeRemoteModRepository(SECTION_CUSTOMIZATION);
public static final CurseForgeRemoteModRepository MODS = new CurseForgeRemoteModRepository(Type.MOD, SECTION_MOD);
public static final CurseForgeRemoteModRepository MODPACKS = new CurseForgeRemoteModRepository(Type.MODPACK, SECTION_MODPACK);
public static final CurseForgeRemoteModRepository RESOURCE_PACKS = new CurseForgeRemoteModRepository(Type.RESOURCE_PACK, SECTION_RESOURCE_PACK);
public static final CurseForgeRemoteModRepository WORLDS = new CurseForgeRemoteModRepository(Type.WORLD, SECTION_WORLD);
public static final CurseForgeRemoteModRepository CUSTOMIZATIONS = new CurseForgeRemoteModRepository(Type.CUSTOMIZATION, SECTION_CUSTOMIZATION);
public static class Category {
private final int id;

View File

@@ -52,6 +52,11 @@ public final class ModrinthRemoteModRepository implements RemoteModRepository {
private ModrinthRemoteModRepository() {
}
@Override
public Type getType() {
return Type.MOD;
}
private static String convertSortType(SortType sortType) {
switch (sortType) {
case DATE_CREATED: