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.
SmartContainersIgnore
Adds Ignore Button for Chests. And a "Ignore Autosort" function over ctrg +RightMousebutton
By Botaniclas
| Date uploaded | 2 weeks ago |
| Version | 1.0.0 |
| Download link | Botaniclas-SmartContainersIgnore-1.0.0.zip |
| Downloads | 25 |
| Dependency string | Botaniclas-SmartContainersIgnore-1.0.0 |
README
SmartContainers Ignore 1.1.0
Kleiner Zusatz fuer den installierten PONEIS-SmartContainers-Port: Thunderstore-Paket 1.8.2, interne DLL-/Plugin-Version 1.8.0.
Er ersetzt die Funktion des Gruppen-Buttons durch eine gemeinsame, dauerhaft an der jeweiligen Truhe gespeicherte Sperre fuer SmartContainers-Zielsuche. Das Einsortieren verwendet nur noch passende Items, keine Gruppen-Zuordnung.
Neu in 1.1.0: Strg + Rechtsklick verschiebt den Stapel direkt zwischen Spielerinventar und geoeffneter Truhe, ohne SmartContainers-Umleitung. Strg + Linksklick behaelt das automatische Einsortieren.
Installation
- Valheim schliessen.
- SmartContainers installiert lassen.
BepInEx/plugins/SmartContainersIgnore/SmartContainersIgnore.dllaus diesem Paket in dasselbe aktive Modprofil kopieren und eine vorhandene Version ersetzen. Nur eine SmartContainersIgnore.dll installiert lassen.- Valheim neu starten.
Die originale SmartContainers.dll wird nicht ersetzt. Der Zusatz ist unabhaengig von EasySpawnerScale. Das Paket enthaelt keine Spiel- oder Fremdmod-DLLs. Das vorhandene Spielprofil wurde bei der Entwicklung nur gelesen.
Jeder beteiligte Spieler installiert den Zusatz auf seinem Client. Ein Server- Zusatz ist nicht erforderlich. Clients ohne den Zusatz werten die Sperre nicht aus.
Bedienung
In der geoeffneten Truhe erscheint am bisherigen Plus-Button ein Schalter:
- Auto AN: SmartContainers darf diese Truhe als automatisches Ziel verwenden. Klicken schliesst genau diese Truhe aus.
- Auto AUS: SmartContainers ignoriert diese Truhe, auch wenn passende Items darin liegen. Erneutes Klicken laesst sie wieder zu.
Die Farbe und der Tooltip zeigen den Zustand; eine Meldung bestaetigt den Klick.
Der Schalter erscheint auch bei deaktivierter Gruppierung. Die vorhandene
Einstellung Grouping.createGroupBtnPos bestimmt weiterhin seine Position.
Shift/Strg beim Klicken erzeugen keine Gruppen oder Item-Filter mehr.
Der Schalter wird per Maus bedient; der vom Knopfvorbild geerbte Take-All-
Gamepad-Shortcut ist absichtlich entfernt.
Die Aenderung betrifft die aktuell geoeffnete Truhe. Die Identitaet wird beim Klick neu ermittelt. Ein Wechsel zu einer anderen Truhe uebertraegt die Sperre nicht. Ist der Schalter deaktiviert, fehlt noch die Netzwerkberechtigung oder ein gueltiges dauerhaftes Truhenobjekt. Truhe schliessen und erneut oeffnen.
Umfang
Strg + Rechtsklick: direkter Transfer
Bei geoeffneter Truhe gelten folgende Eingaben auf einem Item:
| Eingabe | Verhalten |
|---|---|
| Strg + Linksklick | Bisheriges SmartContainers-Einsortieren |
| Strg + Rechtsklick | Direkter Vanilla-Transfer in die geoeffnete Truhe bzw. zurueck ins Spielerinventar |
| Rechtsklick ohne Strg | Normale Benutzen-/Ausruesten-Funktion |
Beide Strg-Tasten funktionieren. Beim direkten Transfer werden keine anderen
Truhen gesucht, auch nicht als Ausweichziel bei fehlendem Platz. Valheim
entscheidet wie bisher ueber Stapel, Restmengen, freie Plaetze und Questitems.
Der Transfer ruft den originalen Ctrl-Linksklick-Handler mit Modifier.Move auf.
Der Zusatz schaltet nur fuer diesen synchronen Aufruf das SmartContainers-Routing
aus; danach wird es auch im Fehlerfall sofort wieder freigegeben.
Manuelles Einlagern per Strg + Rechtsklick ist auch in einer auf Auto AUS gesetzten Truhe erlaubt. Deren gespeicherte automatische Sperre bleibt bestehen. Bei aktivem Ziehen eines Items wird die Kombination ignoriert. Ohne geoeffnete Truhe bleibt der normale Rechtsklick erhalten; der neue Shortcut wirft dort keine Gegenstaende auf den Boden. Nach verweigertem Transfer in einer offenen Truhe wird nicht auf Benutzen/Ausruesten zurueckgefallen.
Automatische Zielsuche
Gesperrte Truhen werden aus SmartContainers' normalen Zielkandidaten entfernt. Direkt vor dessen automatischem Transfer wird die Sperre erneut geprueft. Das betrifft die Zielsuche beim Ctrl-Klick-Einsortieren sowie beim optionalen SmartContainers-Unload. Passende Stapel umgehen die Sperre nicht.
Die normale manuelle Truhenbenutzung bleibt erhalten: Gegenstaende direkt in die geoeffnete Truhe legen, entnehmen oder dort die Vanilla-Funktion "Stapel einlagern" verwenden, bleibt eine ausdrueckliche manuelle Aktion. Der Zusatz sperrt die Truhe nicht fuer Zugriffe anderer Mods, etwa Material- Entnahme zum Craften. Er ersetzt keine allgemeine Zugriffssicherung.
Das Gruppen-Routing wird lokal im Routing-Code deaktiviert. Vorhandene Gruppen und Config-Dateien werden nicht geloescht oder geaendert. Die optionalen Unload- Itemfilter des Originalmods behalten ihre Auswahlfunktion; die Zielzuordnung verwendet auch dabei ausschliesslich passende Items.
Reichweite, Zugriffspruefungen, Itemfilter und der Schutz vor gleichzeitiger Truhenbenutzung stammen weiterhin vom Originalmod. Dessen separate Abfrage mit doppelter Reichweite fuer die Multiplayer-Konfliktpruefung bleibt ungefiltert. Der Zusatz implementiert keinen eigenen Itemtransfer und loescht selbst keine Items. Fuer den manuellen Shortcut verwendet er Valheims vorhandenen Handler.
Gemeinsame Speicherung
Der Schalter setzt ein einzelnes natives ZDO-Bool-Feld:
niclas.smartcontainers.ignore.v1.
Valheim synchronisiert dieses mit der Truhe und speichert es beim normalen
Weltspeichern. Ein erneutes Oeffnen, Zonenwechsel und Weltneustart sind dadurch
vom Speicherverfahren abgedeckt. Die Wirkung auf anderen Clients folgt der
normalen Netzwerksynchronisation; es gibt keinen eigenen Synchronisationsdienst.
Geschrieben wird nur mit normalem Truhenzugriff und vorhandener lokaler Netzwerk-Ownership. Valheim uebergibt diese beim regulaeren Oeffnen. Der Zusatz erzwingt weder Ownership noch neue RPC-Aufrufe. Das Umschalten der Truhensperre aendert keine Inventardaten.
Die Sperre gehoert zur konkreten Truhe. Eine abgerissene und neu gebaute Truhe ist ein neues Objekt und beginnt mit Auto AN. Ohne installierten Zusatz bleibt das gespeicherte Feld wirkungslos; nach erneuter Installation wird es wieder ausgewertet. Vor dem Deinstallieren lassen sich Sperren ueber den Button aufheben.
Geprueft und noch zu pruefen
- Build gegen die vorhandenen Original-DLLs, Compilerwarnungen als Fehler.
- 33 Tests der Sperr-/Berechtigungslogik und der zeitlich begrenzten Routing-Unterdrueckung.
- 65 Vertrags-/Transformationstests gegen installierte DLLs und den echten Zusatz.
- Native Netzwerk- und Speicherpfade fuer ZDO-Bool-/Integerdaten untersucht.
- Noch kein UI-Test im laufenden Spiel und kein echter Zwei-Client-/Neustarttest.
Kurzer Spieltest:
- Zwei Truhen mit demselben Item vorbereiten und eine davon auf Auto AUS setzen.
- Von einer dritten Truhe aus SmartContainers-Einsortieren ausloesen: Nur die zugelassene Zieltruhe darf Items erhalten.
- Dieselbe Aktion auf einem zweiten Client mit Zusatz wiederholen.
- Welt normal speichern/neustarten und Auto AUS kontrollieren.
- Gesperrte Truhe wieder zulassen und erneute Zielerkennung pruefen.
- Der Button darf keine Items entnehmen und keine Gruppe anlegen.
- Mit Strg + Rechtsklick in eine offene Truhe einlagern, obwohl eine Nachbartruhe den passenden Stapel hat: Es darf keine Umleitung stattfinden. Gegenrichtung und Auto AUS ebenfalls pruefen.
- Zieltruhe fuellen: Ein unpassender Stapel darf nicht in eine andere Truhe ausweichen und nicht benutzt/ausgeruestet werden. Anschliessend mit Strg + Linksklick kontrollieren, dass das automatische Routing wieder aktiv ist.
- Beide Strg-Tasten, Rechtsklick ohne Strg, Questitems und aktiven Drag pruefen.
Erwartete Startmeldung:
Ready: shared persistent chest exclusion; same-item routing only; Auto button replaces groups.
Zusaetzliche Startmeldung seit 1.1.0:
Ctrl + right-click: native transfer to/from the open chest without SmartContainers routing.
Der Zusatz prueft die konkreten SmartContainers- und Valheim-Module. Bei einem nicht geprueften Update wird er mit einer Logmeldung deaktiviert.
Selbst bauen
build.ps1 verwendet den vorhandenen Windows-.NET-Framework-C#-Compiler und
lokale Spiel-/BepInEx-Referenzen. Kein SDK-/NuGet-Download erforderlich.
.\build.ps1 -ValheimDirectory 'D:\Games\Valheim' -BepInExDirectory 'D:\Profile\BepInEx'
.\test.ps1 -ValheimDirectory 'D:\Games\Valheim' -BepInExDirectory 'D:\Profile\BepInEx' -SmartContainersDll 'D:\Profile\BepInEx\plugins\SmartContainers\SmartContainers.dll'
Die Vertragstests benoetigen zusaetzlich .NET Runtime 8. Die fertige DLL liegt
unter bin/SmartContainersIgnore.dll.