Fix: ConcurrentModificationException
This commit is contained in:
@@ -56,23 +56,29 @@ public final class OptiFineBMCLVersionList extends VersionList<OptiFineRemoteVer
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
versions.clear();
|
lock.writeLock().lock();
|
||||||
Set<String> duplicates = new HashSet<>();
|
|
||||||
List<OptiFineVersion> root = JsonUtils.GSON.fromJson(task.getResult(), new TypeToken<List<OptiFineVersion>>() {
|
|
||||||
}.getType());
|
|
||||||
for (OptiFineVersion element : root) {
|
|
||||||
String version = element.getType() + "_" + element.getPatch();
|
|
||||||
String mirror = "http://bmclapi2.bangbang93.com/optifine/" + element.getGameVersion() + "/" + element.getType() + "/" + element.getPatch();
|
|
||||||
if (!duplicates.add(mirror))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
boolean isPre = element.getPatch() != null && (element.getPatch().startsWith("pre") || element.getPatch().startsWith("alpha"));
|
try {
|
||||||
|
versions.clear();
|
||||||
|
Set<String> duplicates = new HashSet<>();
|
||||||
|
List<OptiFineVersion> root = JsonUtils.GSON.fromJson(task.getResult(), new TypeToken<List<OptiFineVersion>>() {
|
||||||
|
}.getType());
|
||||||
|
for (OptiFineVersion element : root) {
|
||||||
|
String version = element.getType() + "_" + element.getPatch();
|
||||||
|
String mirror = "http://bmclapi2.bangbang93.com/optifine/" + element.getGameVersion() + "/" + element.getType() + "/" + element.getPatch();
|
||||||
|
if (!duplicates.add(mirror))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (StringUtils.isBlank(element.getGameVersion()))
|
boolean isPre = element.getPatch() != null && (element.getPatch().startsWith("pre") || element.getPatch().startsWith("alpha"));
|
||||||
continue;
|
|
||||||
|
|
||||||
String gameVersion = VersionNumber.normalize(element.getGameVersion());
|
if (StringUtils.isBlank(element.getGameVersion()))
|
||||||
versions.put(gameVersion, new OptiFineRemoteVersion(gameVersion, version, mirror, isPre));
|
continue;
|
||||||
|
|
||||||
|
String gameVersion = VersionNumber.normalize(element.getGameVersion());
|
||||||
|
versions.put(gameVersion, new OptiFineRemoteVersion(gameVersion, version, mirror, isPre));
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
lock.writeLock().unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user