Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
SwiftPickupMagnetFix
Stops SwiftPickup's magnet from dragging items you cannot carry. Checks free slots, partial stacks and carry weight.
By Saru
| Last updated | 2 weeks ago |
| Total downloads | 99 |
| Total rating | 0 |
| Categories | Mods Tweaks |
| Dependency string | Saru-SwiftPickupMagnetFix-2.0.0 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350SoulEmper0r-SwiftPickup
Optimized auto-pickup for Valheim: smooth per-frame magnet, ground drops merged into stacks, loot multiplier on pickup - zero lag.
Preferred version: 1.3.3README
SwiftPickup Magnet Fix
SwiftPickup aimante les objets au sol sans jamais vérifier qu'ils peuvent entrer dans l'inventaire. Quand celui-ci est plein, les objets sont tirés vers le joueur, le ramassage échoue, puis ils sont réinjectés au scan suivant — ils finissent par suivre le joueur en permanence.
Ce plugin retire de la liste magnet tout objet que l'inventaire ne peut pas accepter. Il ne touche ni au ramassage, ni au merge des drops, ni au multiplicateur de loot.
Détail du test
Un objet est écarté si l'une des deux conditions échoue :
Inventory.CanAddItem(item)— cases libres ou pile partielle compatibleGetTotalWeight() + item.GetWeight() <= Player.GetMaxCarryWeight()— surcharge
Les deux comptent. CanAddItem ignore le poids, et c'est la surcharge qui bloque
l'autopickup vanilla, d'où le second test.
Conséquence des piles partielles : avec zéro case libre mais une pile de bois à 30/50, le bois reste aimanté. C'est voulu — l'objet rentre réellement.
Fonctionnement
Prefix Harmony sur SwiftPickup.SwiftPickupPlugin.MoveMagnets, appelée à chaque frame
depuis le postfix de Player.Update. La liste statique MagnetItems est purgée avant
tout déplacement. HandleScan réinjecte les objets au scan suivant (0,15 s par défaut),
le prefix les retire à nouveau avant la frame suivante : déplacement net nul.
Les internes de SwiftPickup sont résolus par reflection. Si une mise à jour renomme
MoveMagnets ou MagnetItems, le plugin logge un avertissement et ne patche rien
plutôt que de casser le jeu.
Configuration
BepInEx/config/saru.swiftpickup.tweaks.cfg
| Clé | Défaut | Effet |
|---|---|---|
Enabled |
true |
Active le filtrage de la liste magnet |
Compilation
dotnet build -c Release -p:Deploy=true
Les chemins ValheimDir et BepInExDir sont définis dans le .csproj et peuvent être
surchargés en ligne de commande. Cibler net472 demande soit le package NuGet
Microsoft.NETFramework.ReferenceAssemblies, soit le .NET Framework 4.7.2 Developer Pack.
Testé avec SwiftPickup 1.3.3 et BepInEx 5.