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.
BotanicPupPatch
PUP FPS 1.0.33 collision/support guards with optional FiresGhettoNetworking ownership-handoff protection.
By Botaniclas
| Date uploaded | a week ago |
| Version | 1.1.0 |
| Download link | Botaniclas-BotanicPupPatch-1.1.0.zip |
| Downloads | 28 |
| Dependency string | Botaniclas-BotanicPupPatch-1.1.0 |
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.2351PUP82-PUP_FPS
A smart building combiner for massive Valheim bases with single-player and client-server multiplayer support. Controls: [ combine, ] restore, \ highlight, F8 emergency restore.
Preferred version: 1.0.34README
BotanicPupPatch 1.1.0
Ein Zusatzmod für PUP FPS 1.0.33: Cart-Guard, Guard für Tiere/Monster und bisheriger Statikfix in einer DLL. Version 1.1.0 ergänzt Schutz bei FiresGhettoNetworking-Besitzerwechseln und direkten Positionsabgleichen. FGN bleibt optional; PUP FPS wird weiterhin benötigt.
Installation
- Spiel und Dedicated Server beenden.
- Alte
PupCartGuard.dllentfernen. VorigeBotanicPupPatch.dllersetzen; nur eine Kopie des neuen Zusatzmods behalten. - ZIP wie SmartContainersIgnore im Modmanager lokal importieren. Manuell:
DLL nach
BepInEx/plugins/BotanicPupPatch/kopieren. - Für vollständigen Dedicated-Schutz auf Server mit PUP und auf allen simulierenden Clients dieselbe Version installieren.
- Neu starten. Log:
BotanicPupPatch 1.1.0 ready. Bei FGN zusätzlichFGN ... handoff protection enabled.
Benötigt: BepInExPack Valheim 5.4.2351 und PUP FPS 1.0.33. Keine Konfiguration. FGN-Unterstützung wurde gegen das lokale FiresGhettoNetworking 1.5.28 geprüft (Assembly-Version 1.4.67.0). FGN ist eine weiche BepInEx-Abhängigkeit für die Ladefolge; keine Pflichtabhängigkeit des ZIPs. Seine DLL bleibt unverändert.
Originale PUP-DLL und bisherige Support-Test-DLL werden erkannt. Eine bereits korrigierte DLL kann bleiben; der Statikzweig wird nicht erneut invertiert. Andere PUP-Binaries werden mit Fehlermeldung abgewiesen und der Zusatzmod bleibt inaktiv. Keine separate Cart-DLL oder veränderte PUP-DLL erforderlich.
Wirkung
- Carts: Chassis und vorhandene Rad-Rigidbodies werden bei ausstehender PUP-Kollision vorübergehend mit Constraints gesperrt.
- Tiere/Monster: Character-Rigidbody wird ebenso gehalten. PUPs gemeinsame Vorbereitung liefert währenddessen false, sodass Bewegung und AI pausieren und PUP keine zweite kinematische Sperre setzt. Gezähmte Tiere sind eingeschlossen; Spieler bleiben vom neuen Guard ausgenommen.
- FGN-Übergaben: Bei bevorstehender lokaler Mob-Übernahme werden aktuelle
Physikposition und die von FGN verwendete ZDO-Zielposition geprüft. Nach FGN
und nativem
ZSyncTransform.CustomFixedUpdateerfolgt ein Nachcheck der tatsächlichen Rigidbody-Position, auch bei übersprungener nativer Methode. Bei fehlender Kollision bleibt der Körper vor der nächsten normalen Unity-Physiksimulation gehalten. FGN darf weiterhin Besitz und Position abgleichen. - Freigabe: Aktuelle Clusterdaten, passende Cache-Version und PUPs exakte Kollisionsvorbereitung müssen vorliegen. Kein blindes Freigeben nach einem Timer. Vor Empfang des Multiplayer-Manifests kann auch außerhalb später bekannter Clustergebiete kurz gehalten werden.
- Statik: Falsch geprüfter
m_noSupportWear-Zweig wird im Arbeitsspeicher korrigiert. PUP kann seine vorhandene Kollisions-/Support-Neuberechnung für Bauteile ausführen, die bei fehlender Unterstützung Schaden nehmen. Keine Heilung, Unzerstörbarkeit oder allgemeine Abschaltung der Statik.
Guard arbeitet im Multiplayer. Die Statikzweig-Korrektur bleibt wie der frühere DLL-Patch auch im Singleplayer vorhanden. Der Zusatzmod erzeugt keine neuen Netzwerkpakete, ZDO-Schreibvorgänge, Besitzübernahmen, Positionskorrekturen oder Änderungen an Gravitation/isKinematic. PUP kann beim Vorbereiten temporäre Proxies erzeugen.
Kollisionslease maximal 0,1 Sekunden; Bewegung ab einem Meter, Welt-, Besitzer- oder Clusterrevisionswechsel erzwingen neue Prüfung. Vollständige Besitzer-ID wird verfolgt, einschließlich A zu B auf einem dritten Client. Direkter lokaler Sync-Sprung über einen Millimeter verwirft die Lease zusätzlich. Gewöhnliche entfernte Interpolation verursacht keinen zusätzlichen ständigen vollen Recheck. Der Sync-Hook benutzt registrierte Carts/Characters; andere Netzwerkobjekte werden nicht nach Guards durchsucht.
Technischer Hintergrund: HarmonyX führt alle Prefixes aus. Deshalb wird PUPs gemeinsame Mob-Vorbereitung abgefangen; der neue Sync-Postfix läuft ausdrücklich nach FGN.
Dedicated-Test
Build und 61 automatisierte Assertions bestanden; echter Unity-/Dedicated-Ablauf noch nicht bestätigt. Fehlerfreiheit und endgültige Behebung sind damit nicht belegt.
Mit Weltkopie testen: Cart, gezähmtes Tier, wildes Monster und ausschließlich am Cluster abgestützte Bauteile. Mehrmals einloggen, weit weg und zurückgehen, zweiten Spieler beitreten lassen. Danach normale Bewegung, AI und Statik prüfen. Wirklich frei schwebende Bauteile müssen weiterhin Schaden nehmen.
Für FGN Balance Creature Ownership eingeschaltet lassen. Zwei Spieler in
Reichweite eines wilden Monsters verwenden. Nach untätigem bisherigem Besitzer
kann der andere den Kampf beginnen. Im Log muss tatsächlicher OWNER CHANGE
erscheinen; ohne diesen wurde die zusätzliche FGN-Übergabe noch nicht getestet.
Gezähmte Tiere und Carts verteilt FGNs zusätzlicher Mob-Balancer nicht; sie
behalten aber den allgemeinen Guard und Netzwerk-Sync-Schutz.
Logs: HOLD CART, RELEASE CART, HOLD MOB, RELEASE MOB, OWNER CHANGE,
SYNC RECHECK. FGN destination pending bedeutet fehlende bestätigte Kollision
an der zukünftigen Übernahmeposition. Warnung nach zehn Sekunden Hold,
danach alle 30 Sekunden. Solange PUP nicht bereit ist, gibt es keine Zeitfreigabe.
Bei internem Fehler werden eigene Sperren freigegeben und der Zusatzmod deaktiviert.
Bereits falsche Netzwerkpositionen werden nicht nach oben zurückgesetzt; verlorene Objekte werden nicht rekonstruiert. Der jeweilige Simulationsbesitzer muss den Patch installiert haben. Andere FGN-Versionen sind nicht pauschal blockiert, aber auch nicht als geprüft einzustufen.
Paket und Rückweg
Struktur wie SmartContainersIgnore-1.3.0.zip:
BotanicPupPatch.dll
README.md
manifest.json
icon.png
Entfernen: Spiel/Server beenden und Zusatz-DLL löschen. Keine neuen Weltdaten bleiben zurück. Eine vorher veränderte PUP-DLL wird dadurch nicht zurückgesetzt; für deren ursprüngliches Verhalten PUP FPS 1.0.33 original installieren.