You are viewing a potentially older version of this package. View all versions.
Botaniclas-BotanicPupPatch-1.1.0 icon

BotanicPupPatch

PUP FPS 1.0.33 collision/support guards with optional FiresGhettoNetworking ownership-handoff protection.

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-5.4.2351 icon
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.2351
PUP82-PUP_FPS-1.0.34 icon
PUP82-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.34

README

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

  1. Spiel und Dedicated Server beenden.
  2. Alte PupCartGuard.dll entfernen. Vorige BotanicPupPatch.dll ersetzen; nur eine Kopie des neuen Zusatzmods behalten.
  3. ZIP wie SmartContainersIgnore im Modmanager lokal importieren. Manuell: DLL nach BepInEx/plugins/BotanicPupPatch/ kopieren.
  4. Für vollständigen Dedicated-Schutz auf Server mit PUP und auf allen simulierenden Clients dieselbe Version installieren.
  5. Neu starten. Log: BotanicPupPatch 1.1.0 ready. Bei FGN zusätzlich FGN ... 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.CustomFixedUpdate erfolgt 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.