PerfectFlatten
Valheim 1.0.15: flatten terrain in admin-approved zones, with API-based compatibility checks. Server and tool clients required. Not a general anti-cheat.PerfectFlatten 2.0.1
Valheim 1.0.15. BepInExPack_Valheim 5.4.2350. No Jötunn requirement.
2.0.1 — zgodność / compatibility
PL: Zamiast blokować każdy nowy numer Valheim, mod sprawdza kluczowe metody operacji terenu, kontroli uprawnień, wejścia i pola ustawień. Zgodne API pozwala uruchomić mod na nowej wersji z ostrzeżeniem w logu. Wykryta niezgodność blokuje narzędzie przed użyciem; nieudane zakładanie patchy jest wycofywane. Skontrolowano rzeczywiste biblioteki 1.0.15. Natywna operacja wyrównywania nadal zapisuje teren, a poprawka gry dotycząca duplikatów kompilatora nie jest nadpisywana. Format stref i uprawnienia pozostają bez zmian.
EN: Replaces version-number blocking with startup checks for critical terrain, permission and input APIs. Matching signatures allow newer game versions with a warning; detected mismatches disable the tool before use and failed Harmony installation is rolled back. Verified contracts against real 1.0.15 assemblies. Uses the game's terrain save path and preserves its duplicate-compiler fix. Existing zone files and permission rules are unchanged.
PL/EN: Nie jest to gwarancja działania po każdej aktualizacji / This does not guarantee compatibility with every update. Zmiana zachowania API, Unity lub BepInEx może wymagać nowej DLL / Changes in API behaviour, Unity or BepInEx can still require a new DLL. Brak testu rozgrywki / No live gameplay test performed.
Polski
Wyrównywanie terenu tylko w strefach budowy zatwierdzonych przez administratora. Mod musi być zainstalowany na serwerze i u osób używających narzędzia. Gracze bez narzędzia nie muszą go instalować.
Instalacja / aktualizacja
Zamknij grę, zatrzymaj serwer i wykonaj kopię świata.
- r2modman: wyłącz starą wersję PerfectFlatten, użyj Import local mod w menu profilu i wskaż cały ZIP. Jeżeli pojawi się formularz: autor Ezvay, nazwa PerfectFlatten, wersja 2.0.1. Pozostaw tylko jedną aktywną wersję. BepInEx musi być zainstalowany.
- Serwer: plik plugins/PerfectFlatten.dll z ZIP wgraj do BepInEx/plugins/PerfectFlatten/. Usuń lub podmień poprzednią kopię DLL, jeżeli była w innym katalogu.
- Uruchom serwer i grę przez Start modded. Bez części serwerowej nowa wersja odmawia edycji. Domyślnie lista stref jest pusta: wyrównywanie jest zablokowane wszędzie.
Komendy administratora
Stań w centrum planowanego terenu i otwórz konsolę F5:
pf_zone_add DomKawula 40
Tworzy kołową strefę o promieniu 40 metrów (średnica 80 m). Nazwa bez spacji/polskich znaków; można używać liter, cyfr, _ i -. Promień 5–200 m, maksymalnie 100 stref. Uprawnienia sprawdza serwer według adminlist.txt; admin nie musi włączać devcommands.
pf_zone_list
pf_zone_remove DomKawula
Lista jest dostępna graczom; dodawanie/usuwanie tylko administratorowi. Aby zmienić strefę, usuń ją i dodaj ponownie, stojąc w odpowiednim miejscu. Domyślnie wszyscy mogą używać narzędzia wewnątrz strefy. Opcjonalnie ogranicz ją do jednego identyfikatora platformy z logu serwera:
pf_zone_add DomKawula 40 Steam_TUTAJ_PELNY_NUMER
Wpisz prawdziwy identyfikator, nie powyższy tekst przykładowy. Własność strefy nie daje prawa do dodawania lub usuwania stref. Istniejące wardy nadal mogą blokować edycję. Strefy mają granice poziome (X/Z), nie są bryłami ograniczonymi wysokością.
Użycie
F6 włącza/wyłącza narzędzie, Esc wyłącza. Kółko / Alt+kółko zmienia rozmiar 2–50 m. Shift+kółko zmienia docelową wysokość. Q przełącza kwadrat/koło. LPM wyrównuje teren. Motyka nie jest wymagana.
Gracz i cały obrys muszą mieścić się w jednej uprawnionej strefie. Dodatkowy 1 m margines obejmuje zaokrąglenia siatki terenu. Dlatego przy granicy trzeba zmniejszyć rozmiar lub przesunąć środek. Panel pokazuje wstępną informację o obrysie; ostateczne sprawdzenie uprawnień wykonuje serwer.
Serwer zatwierdza edycję przed przygotowaniem terenu i ponownie przed wykonaniem. Brak odpowiedzi, wyjście z zasięgu, otwarcie menu, utrata własności terenu i brak dostępu ward powodują odmowę/anulowanie. Zaznaczenie jest zamrożone podczas oczekiwania. Obowiązują zwykłe limity wysokości terenu gry; w niektórych miejscach pełne wyrównanie nie jest możliwe.
Zapis stref
Serwer zapisuje: BepInEx/config/PerfectFlatten/world-<UID>.zones.json
Dołącz ten folder do kopii świata i zachowaj go podczas aktualizacji/przenoszenia serwera. Poprzednia wersja pliku jest zachowywana jako .bak. Ręczne zmiany pliku wymagają restartu; zwykle używaj komend. Uszkodzony plik blokuje edycję zamiast otwierać dostęp.
Zakres zabezpieczenia i walidacja
To kontrola dostępu w tym narzędziu, nie serwerowy system antycheat dla całego Valheim. Zatwierdzone operacje nadal wykonuje klient używając sieciowych mechanizmów terenu gry. Stary PerfectFlatten 1.x, zmodyfikowana DLL albo inny mod do terenu mogą ominąć to narzędzie. Usuń stare wersje z profili graczy. Pełna ochrona przed celowo zmodyfikowanymi klientami wymaga dodatkowej kontroli zmian terenu na serwerze.
Kompilacja przeciwko 1.0.15 i testy granic stref przeszły. Nie wykonano testu rozgrywki / połączenia klient-serwer. Pierwszą próbę przeprowadź na kopii świata: odmowa poza strefą, zgoda wewnątrz, odmowa dla obrysu przecinającego granicę, odmowa dodawania stref przez zwykłego gracza, usunięcie strefy i restart. Wielofragmentowe operacje terenu nie są transakcją i nie mają automatycznego cofania.
English
Terrain flattening in administrator-approved building zones. Requires this mod on the server and each tool user's client. Other players do not need the tool. Supports Valheim 1.0.15, BepInExPack 5.4.2350. No Jötunn dependency.
Install
Close the game, stop the server and back up the world. Import the ZIP as a local mod in r2modman (author Ezvay, name PerfectFlatten, version 2.0.1). Disable/remove old copies. Install plugins/PerfectFlatten.dll on the server under BepInEx/plugins/PerfectFlatten/. Keep one DLL copy. Empty zone list or absent server component means no editing.
Commands
Stand at the desired center and use F5:
pf_zone_add MyHome 40
pf_zone_list
pf_zone_remove MyHome
Radius is in metres, 5–200, maximum 100 zones. Names use ASCII letters, digits, _ or -, no spaces. The server checks adminlist.txt for add/remove. Listing is available to players. No devcommands requirement. Optional fourth argument restricts a zone to one exact platform identity from the server log. Without it, all players may use the zone.
Controls / behavior
F6 toggles, Esc exits. Wheel or Alt+wheel changes size (2–50 m); Shift+wheel changes target height; Q toggles square/circle; LMB flattens. No hoe required.
The player and complete footprint must fit within one authorized zone. A 1 m margin covers grid rounding/seams. Ward access and native terrain limits still apply. Zones are horizontal X/Z areas, not height-bounded volumes. The server checks each operation twice; the client locks the edit parameters while waiting. Missing approval/timeouts or changed access cancel the operation.
Persistence
Retain BepInEx/config/PerfectFlatten/world-<UID>.zones.json with world backups. A .bak keeps the previous configuration. Commands apply immediately; manual file edits need a server restart. Invalid zone files fail closed.
Security scope / validation
This controls the supplied tool, not all terrain changes made by arbitrary clients. Approved edits use vanilla client terrain networking. Old 1.x copies, modified clients or other terrain mods can bypass the tool; remove old versions. It is not a general server anti-cheat.
Build and geometry tests passed; live Unity/client-server behavior has not been tested. Test on a world copy first, including denied non-admin commands, outside/boundary edits, allowed edits, zone removal and restart. Multi-tile terrain edits are not atomic and have no automatic undo.


