Posts by Devidian
-
-
Kannst du mir ein Zugang machen?
Habe noch ein Fehler gefunden
und es noch Bunter gemacht
Zugang ist schwierig da es sich um webspace handelt, ich gebe ungerne ftp zugriff für externe frei. Aber du kannst mir jederzeit updates schicken. Vielleicht richte ich mal ein upload formular ein das du es selbst aktualisieren kannst.
PS: Wenn man eine checkbox an oder abwählt wird die Sektion wieder geschlossen, das solltest du fixen.
-
Ich kann es nachher mal auf meinen Webspace laden, den hab ich schon ewig und das wird auch so bleiben 😅
EDIT: https://rw.omega-zirkel.de/tools/permission-manager.html
-
AdminUtils aktualisiert die chunk Oberflächen für die map, allerdings habe ich das erst kürzlich aktiviert, die crashes gab es schon vorher. Ich kann es aber Zeitweise mal wieder deaktivieren und dann noch mal logs generieren.
Die KI hatte mir auch vorgeschlagen UseParallelGC oder UseSerialGC zu verwenden, aktuell hab ich letzteres aktiviert seit 9:48 heute. Bisher gab es noch keinen crash. Sollte es einen weiteren geben werde ich die Mapping Funktion aus AdminUtils deaktivieren.
Bisher habe ich noch kein Plugin das auf blueprints lauscht.
Die chunk x z Ausgabe findet hier statt: https://github.com/Devidian/rw…dMapChunkCapture.java#L30
Hier mal aus der aktuellen log session, die noch nicht abgestürzt ist:
Code[Java] [OZ.ThreadDiagnostics] Thread summary: current=59, peak=69, totalStarted=429, names={Cleaner-0=1, Common-Cleaner=1, FileSystemWatchService=1, Finalizer=1, JDA Gateway-Worker 1=1, JDA MainWS-ReadThread=1, JDA MainWS-WriteThread=1, JDA RateLimit-Elastic-Worker 2=1, JDA RateLimit-Scheduler-Worker 1=1, JDA RateLimit-Scheduler-Worker 2=1, Notification Thread=1, OZ-ThreadDiagnostics=1, OZAdminUtils-MapSource=1, OZDiscordConnect-ActivityTimer=1, OZDiscordConnect-RestartTimer=1, OZDiscordConnect-Transport=1, PluginFileWatcher-Thread=1, ReadingThread=1, Reference Handler=1, Signal Dispatcher=1, Thread-26=1, Thread-27=1, Thread-28=1, Thread-29=1, Thread-30=1, Thread-31=1, Thread-37=1, Thread-38=1, Thread-39=1, Thread-40=1, Thread-41=1, Thread-42=1, Thread-43=1, Thread-44=1, Thread-50=1, Thread-51=1, Thread-52=1, Thread-53=1, Thread-8=1, WebSocket-Reconnect=1, WritingThread=1, httpclient-dispatch-1=1, httpclient-dispatch-10=1, httpclient-dispatch-11=1, httpclient-dispatch-12=1, httpclient-dispatch-13=1, httpclient-dispatch-14=1, httpclient-dispatch-15=1, httpclient-dispatch-16=1, httpclient-dispatch-2=1, httpclient-dispatch-3=1, httpclient-dispatch-4=1, httpclient-dispatch-5=1, httpclient-dispatch-6=1, httpclient-dispatch-7=1, httpclient-dispatch-8=1, httpclient-dispatch-9=1, httpclient-main-1=1, main=1}Die Session lief bis zum geplanten Neustart einwandfrei durch und es waren einige Spieler aktiv
Display MoreCode[Java] [OZ.ThreadDiagnostics] Thread summary: current=65, peak=69, totalStarted=626, names={Cleaner-0=1, Common-Cleaner=1, FileSystemWatchService=1, Finalizer=1, ForkJoinPool.commonPool-worker-80=1, JDA Gateway-Worker 1=1, JDA MainWS-ReadThread=1, JDA MainWS-WriteThread=1, JDA RateLimit-Elastic-Worker 2=1, JDA RateLimit-Scheduler-Worker 1=1, JDA RateLimit-Scheduler-Worker 2=1, Notification Thread=1, OZ-ThreadDiagnostics=1, OZAdminUtils-MapSource=1, OZDiscordConnect-ActivityTimer=1, OZDiscordConnect-RestartTimer=1, OZDiscordConnect-Transport=1, OkHttp TaskRunner=4, Okio Watchdog=1, PluginFileWatcher-Thread=1, ReadingThread=1, Reference Handler=1, Signal Dispatcher=1, Thread-26=1, Thread-27=1, Thread-28=1, Thread-29=1, Thread-30=1, Thread-31=1, Thread-37=1, Thread-38=1, Thread-39=1, Thread-40=1, Thread-41=1, Thread-42=1, Thread-43=1, Thread-44=1, Thread-50=1, Thread-51=1, Thread-52=1, Thread-53=1, Thread-8=1, WebSocket-Reconnect=1, WritingThread=1, httpclient-dispatch-1=1, httpclient-dispatch-10=1, httpclient-dispatch-11=1, httpclient-dispatch-12=1, httpclient-dispatch-13=1, httpclient-dispatch-14=1, httpclient-dispatch-15=1, httpclient-dispatch-16=1, httpclient-dispatch-2=1, httpclient-dispatch-3=1, httpclient-dispatch-4=1, httpclient-dispatch-5=1, httpclient-dispatch-6=1, httpclient-dispatch-7=1, httpclient-dispatch-8=1, httpclient-dispatch-9=1, httpclient-main-1=1, main=1}interessant ist hier das er shutdown macht aber danach 5 mal neustarten muss weil er das problem mit dem port hat. Du hattest mal gesagt das man in den settings Server_RestartEnabled=False verwenden soll, aber geholfen hat es nicht

Da kommt dann immer das hier:
Display MoreCodeUnd im Discord sieht das so aus:
kann ich den Xms wert eigentlich auch über eine server property steuern oder muss ich den mit Plugins_VMOptions überschreiben? Die KI meint der Wert wäre etwas niedrig gewählt

PS: Die Nachtsession lief auch durch. Wenn der heutige Tag auch ohne SIGSEGV oder anderem Absturz läuft schalte ich morgen früh mal auf ParallelGC
-
The game does not have any real groups, there is no function to invite other players to "YOUR" party/group so an admin has to decide which players are in which group. By default any player who joins is in the default group so all default group players share the default player group markers. If you as admin create a new group permission file called "super cool secret friends group" and add 5 people to it, they share their group markers. If they quit the game the markers are still there but if you as admin don't add new players to the abounded group, there is no posibillity for other players to see the markers of that group.
-
ok, if you mean you see offline player marker ... this is intended, they are saved on the server and for the group so i dont get it. What is your problem?
You are always in some kind of group, even if it is the default or "null" group.
-
Group markers are ... group markers so if you are in the same group as other players you will see all markers of that group, no matter who created it. Even as admin you should only see the group markers of your group. So for example if you have player A-F and put them in group A besides from your default player permission group, they wont see the default player group markers anymore but they ALL will see markers created from people in that group A.
If you dont have any permission groups and all players are in the default group (you too) then you will of course soo all players group markers because you are all in the same group.
-
Gestern wars ganz schlimm, gefühlt gibt es mehr SIGSEGV seit ich das extra JNI logging aktiviert habe. Ich habe das 26MB log von gestern gesplittet und alle sessions mit SIGSEGV lade ich hier mal hoch. Auffällig war nur das ein Spieler auch sagte er habe vorher mit einer Blaupause hantiert direkt vor dem crash.
session6 war übrigens mit einer neuen Discord Plugin version, ich habe bei dem Plugin die veraltete JavaCord lib gegen JDA ausgetauscht in der Hoffnung auf Besserung aber ich war nur kurz da und hab ein paar Steine gehauen als er wieder abgeschmiert ist.
-
Ich verstehe was du meinst, das ist jedoch kompliziert umzusetzen. Ich meine rein theoretisch ist alles möglich aber...
... wenn man das dynamisch gestalten will muss man Regeln definieren welche area-permissions als owner permissions gelten z.b. um sowas zu bestimmen wer die Spiellerrechte des Claims bearbeiten kann, das können nur owner, dabei kann er/sie natürlich keinen weiteren owner bestimmen und auch seine eigene permission nicht. Ein Admin muss außerdem dann irgendwo definieren können gruppeA=>areaOwnerA gruppeB=>areaGruppeB etc. und da die Zuordnung später nicht geändert werden kann würde jemand der vorher in gruppeA war und zu gruppeB promoted wurde nicht automatisch in allen areas auch areaGruppeB bekommen, dafür müsste man dann auch noch entsprechend sorgen.
... wenn man das ganze statisch handhaben würde müsste ich eine Anzahl X an verschiedenen Owner-Typen vorgeben und Admins müssten diese entsprechend anpassen nach ihren Bedürfnissen. Da ist halt die Frage wie viele slots definiere ich, wie viele braucht man? Ist sicher einfacher als eine dynamische Zuordnung trotzdem muss auch hier behandelt werden was passiert wenn eine spielergruppe geändert wird.
-
Naja es soll eine Server Einstellung sein und du musst ja nicht auf einem Server spielen der nur Server Blaupausen erlaubt. Und ich möchte schon das man Blaupausen verwenden kann, wenn man z.b. Strassen oder Wege kopiert, es dürfen auch objekte dabei sein - vorrausgesetzt die Blaupausen kosten dann endlich mal Material - alles kein problem. Mein Problem ist eher das Leute frisch auf den Server kommen und einfach irgendwas hinstellen was sie vielleicht noch nicht einmal selbst erstellt haben, ich meine Sobald Materialkosten für Blaupausen implementiert sind ist das Hauptproblem schon mal beseitigt, das neulinge sich eine All-In-Wonder Blaupause hinstellen ohne Material zu beschaffen, dennoch wäre es gut wenn ich als Admin sagen könnte das Spieler in der default gruppe nur Blaupausen verwenden dürfen von dingen die sie bereits auf dem server gebaut haben.
Und es gibt ja immer noch die Möglichkeit einen download anzubieten im falle der Server gespeicherten Blaupausen
-
Moin, abgesehen von den schon angesprochenen Änderungen an Blaupausen kam mir noch folgender Gedanke ...
Ich würde es begrüßen die Möglichkeit zu haben das man Blaupausen auf die aktuelle Welt Begrenzen kann, oder anders gesagt das man nur Blaupausen verwenden kann die auf dem aktuellen Server auch erstellt wurden, um zu verhindern das irgendjemand seine Bauwerke die er woanders erstellt hat einfach platziert.
Manche Bauten sind zwar echt schön, aber als Admin hab ich es lieber wenn die Leute etwas neues Bauen und nicht einfach etwas von einem anderen Server kopieren (vielleicht sogar noch von einem anderen Spieler)
Am besten über die bestehende permissions section, so das man das von den Rechten abhängig machen kann, so kann man vertrauenswürdigen Bauern auch externe erlauben.
Eine andere Lösung wäre das die Blaupausen auf dem Server pro Spieler gespeichert werden, das hätte auch den Vorteil als Nebeneffekt das man Blaupausen über ein Plugin handelbar machen könnte
, -
Ich weiss nicht obs relevant ist aber eben habe ich eine Blaupause machen wollen und genau dann ist er abgeschmiert. Ist zumindest mal was anderes.
-
Ich habe die logs mit docker compose logs --since ... > umgeleitet um auch die start und end echos vom entrypoint.sh script mit zu haben.
Das angehängte log hat 3 Sessions, eine kurze eine lange, beide mit SIGSEGV und eine "normale" danach die wegen fehlendem freien port beendet wurde.
An diesem log sieht man sehr schön das es komplett random erscheint wann der prozess abschmiert.
-
Hier mal ein log von prod, über docker logs, da sind jetzt auch die JNI werte=true mit dabei. Es gab direkt einen Absturz nach dem ein Spieler rein kam, obwohl der Server erst kurz vorher neu gestartet wurde.
Hier sind auch die diagnose-tools dabei die ich hab einbauen lassen. diag-crash-01.log
Gestern hatte ich die Diagnose auf meinem development server aktiviert da war die session bis zum regulären Neustart ohne crash. 2026-06-14-21-08-41.log (game-logs, keine docker logs, kann ich aber nachreichen)
Aber es gab wohl ein paar native threads die nie beendet wurden
Ich habe die KI die logs analysieren lassen, das ist ihre Meinung:
Display MoreCode| ------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------- || Tools | `PluginReloadDebouncer` | Remediated: worker dispatches before scheduling server-managed delayed execution || Tools | `WSClientEndpoint` callbacks | Foreign-thread transport callbacks; consumers must dispatch before game API access || Discord Connect | JavaCord slash-command listener | Remediated through server-thread dispatcher; blocking Discord response waits removed || Discord Connect | restart `java.util.TimerTask` | Remediated: timer enqueues game operations only || Discord Connect | screenshot callbacks | Remediated: stable IDs/immutable values only; notifications dispatched || Discord Connect | async HTTP callbacks and JavaCord sends | Remediated: immutable transport inputs on bounded lifecycle-owned worker; no retained game objects || Global Intercom | screenshot callbacks | Remediated: transport-only callback, no retained player || Admin Utils | map capture worker | Safe pattern: game reads before worker; immutable data persistence on worker || Shop, Land Claim, GPS, Tools UI | PluginAPI `Timer` callbacks | Managed by PluginAPI `PluginTimerManager`; explicit thread guarantee absent, runtime verification required || Rewards, Shop, GPS, Marketplace, Land Claim | reflection bridges | Synchronous plugin-to-plugin calls from existing game/plugin call paths; no owned worker threads || Owner/source | Thread name | Creation frequency | API access | Shutdown behavior | Expected lifetime | Known risk || ----------------------------- | -------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------ | ---------------------------------- | ----------------------------------------------- || Tools file watcher | `PluginFileWatcher-Thread` | once per Tools enable | filesystem only; callbacks dispatch to server thread | watcher and executor closed on Tools disable | Tools enable lifetime | blocked watch or missed shutdown || Tools reload debouncer | `PluginReloadDebouncer-Thread` | once per Tools enable, thread created on first task | dispatches reload request to server thread | scheduler stopped on Tools disable | idle/on-demand during Tools enable | delayed task retaining plugin callback || Tools WebSocket reconnect | `WebSocket-Reconnect` | once per endpoint instance, thread created on first work | transport callbacks only | all endpoints stopped on Tools disable | endpoint lifetime | library threads or reconnect churn || Tools Log4j shutdown hook | `OZ-Log4j-Terminator` | once per JVM | no game API access | runs only during JVM shutdown | JVM lifetime | intentionally remains across plugin reloads || Discord transport executor | `OZDiscordConnect-Transport` | once per Discord Connect enable, thread created on first work | transport only | bounded executor drained/stopped on disable | Discord Connect enable lifetime | blocking HTTP operations delaying shutdown || Discord restart timer | `OZDiscordConnect-RestartTimer` | once per Discord Connect enable | callback dispatches to server thread | tasks cancelled; timer cancelled and purged on disable | Discord Connect enable lifetime | fixed: former classloader/reload retention || Discord activity timer | `OZDiscordConnect-ActivityTimer` | once per Discord Connect enable | callback dispatches to server thread | tasks cancelled; timer cancelled and purged on disable | Discord Connect enable lifetime | fixed: former classloader/reload retention || Admin Utils map source worker | `OZAdminUtils-MapSource` | once per Admin Utils enable, thread created on first persistence task | immutable data persistence only | executor interrupted and awaited on disable | Admin Utils enable lifetime | database operation can delay shutdown || JavaCord | library-defined | library managed | Discord API only; listeners dispatch before game API access | `JavaCordBot.disconnect()` on Discord disable | bot connection lifetime | library-owned thread churn must be measured || WebSocket library | library-defined | per socket/connection as managed by library | transport only | socket disconnect through Tools endpoint shutdown | connection lifetime | library-owned thread churn must be measured || Apache Async HTTP | library-defined | currently per asynchronous client use | transport only | client closes after request scope | request lifetime | repeated client creation may cause thread churn || Screenshot callbacks | API-defined | per screenshot request | immutable values and transport; server notifications dispatch | API-managed completion | request lifetime | callback thread lifecycle is API-owned || PluginAPI timers | API-defined server/timer threads | per registered PluginAPI timer | plugin-specific; runtime observed on server thread | PluginAPI/plugin lifecycle managed | timer/plugin lifetime | explicit API thread guarantee is absent | -
That is how the game works. Admin permissions > Area permissions > group permissions. In other words: Area permissions ALWAYS overwrite group permissions. If you want to give them more permissions you have to edit the ozlc-owner area permissions BUT then every player with a claim gets these permissions regardless of their group permissions. That is how it works, i cant change it. A workaround would be that you create a veteran-player area permission as copy from ozlc-owner and then change the players area permissions to that BUT then the plugin wont detect the player as owner and he cant manage his own claim anymore.
-
Hmm... hast du das kürzlich erst aktiviert?
Laut den prod-crash.log sind die Optionen nicht aktiv, also die nöten Argumente werden nicht an die JVM übergeben... ist das ein anderer Server oder waren sie da noch nicht aktiv? Sonst ist es möglicherweise auch ein Bug 
auf prod war es nicht aktiv, nur auf dem dev server (ich hab 3 Server laufen, einen zum spielen 1 zum testen und einen auf einer kleineren Maschine für andere tests), der war aber auch in den scanns zu den abstürzen mit drin, trotzdem gab es hier keine neuen / anderen Erkenntnisse aus den Abstürzen.
-
Du könntest evtl. zusätzlich auch einmal folgende Einstellung zur server.properties hinzufügen:
Plugins_JNIVerbose=True
Dann werden zusätzliche Meldungen ausgegeben (gerade auch in dem oben genannten Fall, also wenn zu viele Local Refs vorhanden sind, müsste JNI dann eigentlich was ausgeben). Könnte den Log aber etwas zuspammen.
Ggf. könntest du auch Plugins_JNIXcheck=True hinzufügen, das könnte aber etwas Overhead mit sich bringen. Damit führt Java zusätzliche Validierungen und Prüfungen durch. Wichtiger wäre aber vmtl. obige JNIVerbose Einstellung
Gerade geprüft auf meinem dev server ist das sogar beides true schon

-
Ich habe mal alle SIGSEGV events aus den docker logs extrahieren lassen mit ein wenig vor und nach offsets. Dann hab ich das der KI nochmal zur Analyse übergeben. Leider auch nicht so viel neues. Ich arbeite jetzt mal aus wie ich dem Verursacher auf die schliche kommen kann.
Gestern Nacht kam es 2 mal vor, das zweite mal war relativ kurz nach dem ersten, also war der Speicher sozusagen "fresh" die anderen beiden waren am Mittag. Scheinbar ist es auch egal ob 1 oder 7 Spieler online sind, manchmal läuft er mit 7 ohne Fehler.
Hier die KI Analyse:Display MoreCode| ---------- | ---------------------------------------------------------------------------------------------------------------------- || 2026-06-08 | Größerer gemeinsamer Release-Block, unter anderem Tools 0.21.0, Shop 0.2.0, Marketplace 0.2.0, Global Intercom 0.15.0 || 2026-06-13 | Callback-Thread-Safety-Releases: Tools 0.21.1, Discord Connect 0.22.1, Global Intercom 0.15.1; weitere Plugin-Releases || -------------------------- | ---------------------------------------------------------------------------------------- || Vor Shop/Marketplace 0.1.0 | Mindestens 8 sicher datierte Ereignisse plus ein nicht eindeutig datiertes Main-Ereignis |die analysierten logs im Anhang, vor den SIGSEGV 200 Zeilen und danach 100 jeweils
-
A custom height would not fit because in reality the plugin is not using a chunk, its using a chunk-part, a chunk itself is only defined by x/z and a part is a 64 block y height. A custom height would therefor not match the current logic.
-
By the way the jail Feature is Not a Land Claim Feature, its from Admin utils.