@@ -74,16 +74,16 @@ class UpdateManager {
74
74
mods.forEach { metadata ->
75
75
launch {
76
76
if (findJarByModContainer(metadata) == null ) {
77
- logger.info (" Skipping update for {} because it has no jar in mods" , metadata.id)
77
+ logger.debug (" Skipping update for {} because it has no jar in mods" , metadata.id)
78
78
return @launch
79
79
}
80
80
val configIds = getIdBy(metadata)
81
81
if (configIds == null ) {
82
- logger.info (" Searching for updates for {} using fallback method" , metadata.id)
82
+ logger.debug (" Searching for updates for {} using fallback method" , metadata.id)
83
83
checkForUpdatesManually(metadata)
84
84
return @launch
85
85
}
86
- logger.info (" Searching for updates for {} using defined mod id" , metadata.id)
86
+ logger.debug (" Searching for updates for {} using defined mod id" , metadata.id)
87
87
checkForUpdates(metadata, configIds)
88
88
}
89
89
}
@@ -110,18 +110,7 @@ class UpdateManager {
110
110
ModManager .modManager.config.updateChannel,
111
111
result.versions
112
112
)
113
- if (version == null ) {
114
- logger.info(" No update for {} found!" , metadata.id)
115
- ModManager .modManager.setModState(metadata.id, metadata.id, State .INSTALLED )
116
- return
117
- }
118
- logger.info(" Update for {} found [{} -> {}]" , metadata.id, metadata.version.friendlyString, version.version)
119
- ModManager .modManager.setModState(metadata.id, metadata.id, State .OUTDATED )
120
- when (val modResult = provider.getMod(metadata.id)) {
121
- is ModResult .Success -> {
122
- this .updates.add(Update (modResult.mod, metadata.id, metadata.version.friendlyString, version))
123
- }
124
- }
113
+ verifyUpdate(provider, version, metadata, metadata.id)
125
114
return
126
115
}
127
116
@@ -163,18 +152,7 @@ class UpdateManager {
163
152
ModManager .modManager.config.updateChannel,
164
153
versions
165
154
)
166
- if (version == null ) {
167
- logger.info(" No update for {} found!" , metadata.id)
168
- ModManager .modManager.setModState(metadata.id, mod.id, State .INSTALLED )
169
- return
170
- }
171
- logger.info(" Update for {} found [{} -> {}]" , metadata.id, metadata.version.friendlyString, version.version)
172
- ModManager .modManager.setModState(metadata.id, mod.id, State .OUTDATED )
173
- when (val modResult = provider.getMod(mod.id)) {
174
- is ModResult .Success -> {
175
- this .updates.add(Update (modResult.mod, metadata.id, metadata.version.friendlyString, version))
176
- }
177
- }
155
+ verifyUpdate(provider, version, metadata, mod.id)
178
156
}
179
157
180
158
private fun checkForUpdates (metadata : ModMetadata , ids : Map <String , String >) {
@@ -209,14 +187,29 @@ class UpdateManager {
209
187
ModManager .modManager.config.updateChannel,
210
188
versions
211
189
)
190
+ verifyUpdate(provider, version, metadata, id)
191
+ }
192
+
193
+ private fun verifyUpdate (provider : IModUpdateProvider , version : Version ? , metadata : ModMetadata , modId : String ) {
212
194
if (version == null ) {
213
195
logger.info(" No update for {} found!" , metadata.id)
214
- ModManager .modManager.setModState(metadata.id, id , State .INSTALLED )
196
+ ModManager .modManager.setModState(metadata.id, modId , State .INSTALLED )
215
197
return
216
198
}
199
+ if (version.foundTroughFallback) {
200
+ val hash = findJarByModContainer(metadata)?.sha512()
201
+ if (hash != null ) {
202
+ for (asset in version.assets) {
203
+ if (hash == asset.hashes[" sha512" ]) {
204
+ logger.info(" No update for {} found!" , metadata.id)
205
+ return
206
+ }
207
+ }
208
+ }
209
+ }
217
210
logger.info(" Update for {} found [{} -> {}]" , metadata.id, metadata.version.friendlyString, version.version)
218
- ModManager .modManager.setModState(metadata.id, id , State .OUTDATED )
219
- when (val modResult = ModManager .modManager.provider[provider.getName()]?.getMod(id )) {
211
+ ModManager .modManager.setModState(metadata.id, modId , State .OUTDATED )
212
+ when (val modResult = ModManager .modManager.provider[provider.getName()]?.getMod(modId )) {
220
213
is ModResult .Success -> {
221
214
this .updates.add(Update (modResult.mod, metadata.id, metadata.version.friendlyString, version))
222
215
}
@@ -236,7 +229,6 @@ class UpdateManager {
236
229
return try {
237
230
val provider = ModManager .modManager.getSelectedProvider()
238
231
? : return ModInstallResult .Error (TranslatableText (" modmanager.error.noProviderSelected" ))
239
- logger.info(" Installing {}" , mod.name)
240
232
val versions = when (val result = provider.getVersionsForMod(mod.id)) {
241
233
is VersionResult .Error -> return ModInstallResult .Error (result.text, result.cause)
242
234
is VersionResult .Success -> result.versions
@@ -249,13 +241,14 @@ class UpdateManager {
249
241
)
250
242
? : return ModInstallResult .Error (TranslatableText (" modmanager.error.noCompatibleModVersionFound" ))
251
243
244
+ logger.info(" Installing {} v{}" , mod.name, version.version)
252
245
val dir = FabricLoader .getInstance().gameDir.resolve(" mods" )
253
246
when (val result = installVersion(mod, version, dir)) {
254
247
is ModUpdateResult .Success -> ModInstallResult .Success
255
248
is ModUpdateResult .Error -> ModInstallResult .Error (result.text, result.cause)
256
249
}
257
250
} catch (e: Exception ) {
258
- ModInstallResult .Error (TranslatableText (" " ))
251
+ ModInstallResult .Error (TranslatableText (" modmanager.error.unknown.update " , e ))
259
252
}
260
253
}
261
254
0 commit comments