fix duplicated dependent mod

This commit is contained in:
Tungstend 2024-01-07 20:44:23 +08:00
parent eb6c6a6c6d
commit d665ebd8a5
2 changed files with 22 additions and 2 deletions

View File

@ -120,7 +120,7 @@ public class RemoteMod {
private final String id; private final String id;
private RemoteMod remoteMod = null; private transient RemoteMod remoteMod = null;
private Dependency(DependencyType type, RemoteModRepository remoteModRepository, String modid) { private Dependency(DependencyType type, RemoteModRepository remoteModRepository, String modid) {
this.type = type; this.type = type;
@ -165,6 +165,26 @@ public class RemoteMod {
} }
return this.remoteMod; return this.remoteMod;
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Dependency that = (Dependency) o;
if (type != that.type) return false;
if (!remoteModRepository.equals(that.remoteModRepository)) return false;
return id.equals(that.id);
}
@Override
public int hashCode() {
int result = type.hashCode();
result = 31 * result + remoteModRepository.hashCode();
result = 31 * result + id.hashCode();
return result;
}
} }
public enum Type { public enum Type {

View File

@ -574,7 +574,7 @@ public class CurseAddon implements RemoteMod.IMod {
throw new IllegalStateException("Broken datas."); throw new IllegalStateException("Broken datas.");
} }
return RemoteMod.Dependency.ofGeneral(RELATION_TYPE.get(dependency.getRelationType()), CurseForgeRemoteModRepository.MODS, Integer.toString(dependency.getModId())); return RemoteMod.Dependency.ofGeneral(RELATION_TYPE.get(dependency.getRelationType()), CurseForgeRemoteModRepository.MODS, Integer.toString(dependency.getModId()));
}).filter(Objects::nonNull).collect(Collectors.toList()), }).distinct().filter(Objects::nonNull).collect(Collectors.toList()),
gameVersions.stream().filter(ver -> ver.startsWith("1.") || ver.contains("w")).collect(Collectors.toList()), gameVersions.stream().filter(ver -> ver.startsWith("1.") || ver.contains("w")).collect(Collectors.toList()),
gameVersions.stream().flatMap(version -> { gameVersions.stream().flatMap(version -> {
if ("fabric".equalsIgnoreCase(version)) return Stream.of(ModLoaderType.FABRIC); if ("fabric".equalsIgnoreCase(version)) return Stream.of(ModLoaderType.FABRIC);