Posts by red51

    Ich weiß nicht ob schon gemeldet wurde Server.getAllAreas gibt ein Arry mit NULL zurück :thinking:

    Hmm... das konnte ich bei mir jetzt leider nicht reproduzieren :thinking: Auch wenn keine Areas vorhanden sind sollte diese Funktion eigentlich niemals null zurückgeben.


    Wie kann ich herausbekommen welche GameTexturen wo sind? Also für loadFromGame und mir gehts um die ganzen Icons im Baumenü(Linke Seite) und die vom Radialmenu bei [C] :saint:

    Du könntest das Asset Bundle vom Spiel öffnen (Unity bietet direkt einen Asset Bundle Browser als Package für den Editor). Die UI Texturen liegen überwiegend im "interface.bin" Asset Bundle im Spielverzeichnis unter Data/StreamingAssets. Die Icons für das Baumenü liegen überwiegend in "interface/icons/building" ;)


    Ansonsten ein anderer Trick: Mit dem nächsten Update kommt ja die getAllAssetNames() Funktion für Asset Bundles rein. Ein schlauer Fuchs könnte jetzt das Asset Bundle vom Spiel über die API laden und mit dieser Funktion alle Pfade auslesen :D


    Also die Prüfung ob Taste Gedrückt ist bekomme ich hin, aber wie kann ich den Calback für den Spieler Schlißen wenn ich C Losllasse?

    Du meinst das Radial-Menü? Wahrscheinlich wäre da eine player.hideRadialMenu() Methode sinnvoll (womit das aktuell geöffnete Radial-Menü geschlossen wird)... ich packe das mal auf die Liste fürs nächste Update ;)


    Wehre es möglich bei showContextMenu, showRadialMenu, showMessageBox und vieleicht auch die anderen MessageBoxen, den Abbruch Registrieren? Also wenn das Menü zu geht weil mann daneben Klickt(außer Radial) oder mit ESC

    Ja, das wäre sinnvoll. Also zumindest dass das Callback dann trotzdem aufgerufen wird (dann als Parameter aber zB -1 übergeben wird). Ich packe das mal auf unsere Liste, mal sehen ob wir das fürs nächste Update noch reinbekommene ^^


    Bei World.getDisabledNpcs() kommt ein NULL zurück.

    Das ist zumindest dann "normal", wenn keine Npcs deaktiviert wurden. Ich habe aber festgestellt, dass diese Funktion zu einem Crash führt, wenn es deaktivierte Npcs gibt :wat: Das werden wir mit dem nächsten Update beheben ;)

    Weitere Beispiele:

    Die meisten dieser Dinge wären mit beweglichen Bauteilen tatsächlich umsetzbar ^^ Leider nicht davon abgedeckt sind allerdings Fließbänder oder richtige Kräne (die Objekte auch wirklich greifen können)... sowas könnten wir lediglich vom Spiel direkt anbieten (also als fertige Objekte).


    Was mich sehr interessieren würde: Schnittstelle für Objekte in LUA. Dann könnte ein Benutzer/Spieler auch Bedingungen verknüpfen.

    [...]

    Ist LUA nicht schon Teil von Rising World?

    * Wobei solche Beispiele womöglich in eine andere Ära zeigen, wenn man von Signalsteuerung aus geht. Das heißt schalten über Funksender/Empfänger. (Ähnlich wie bei Stromleitungen)

    LUA war als erste API in der Java Version vorhanden, allerdings obsolet und nicht mehr weiterentwickelt, da sie 2016 durch die Plugin API ersetzt wurde. In der neuen Version ist Lua gar nicht mehr vorhanden.

    Allerdings verfolgen die APIs eher einen anderen Zweck, sie dienen nämlich als allgemeine Modding-Schnittstelle.


    Die von dir erwähnten Dinge werden aber alle mit dem künftigen "Stromsystem" möglich sein ;) Das Spiel wird hier komplexe Schaltungen und auch diverse Elemente (zB eine SPS) und Sensoren bieten.

    Darunterfliegen und Gras übermalen ist mühsam, da das Gras ja nicht sichtbar ist, sondern sich unter der Oberfläche ein luftleerer Raum befindet.

    Was meinst du mit "luftleerer Raum"?


    Das eine Erdstück habe ich mit F3 angemalt, das andere mit F2 darüber. Bei F2 ist der Boden viel glatter geworden. Diese Möglichkeit der Strukturierung gibt leider nur bei glattem Boden.

    Mit Tool 2 (also dem Glätten-Werkzeug) werden grundsätzlich keine neuen Texturen aufgetragen, allerdings teilweise durch die Glättung umliegende Texturen übernommen.


    Wenn du dich aber auf das 2. Bild beziehst: Darauf sind 2 verschiedene Erdtexturen zu sehen, einmal das normale "Dirt" bzw. "Erde", und dann der "Waldboden". Wenn du mit Tool 3 arbeitest kannst du diese Materialien direkt auswählen ;)

    Schwer zu sagen, warum das Boot nach unten gewandert ist :thinking: Wenn dort allerdings ein Hohlraum ist, dann erkennt das Spiel das als reguläre Wasseroberfläche. Befand sich das Boot vorher denn auch im Wasser, oder lag es am Strand (auf dem Bild ist das schwierig zu erkennen)?


    Wegen dem Problem, dass du den Hohlraum nicht entfernen kannst: Hast du evtl. die Möglichkeit, mir deine Welt zuzusenden? Dann könnte ich versuchen, das Problem bei mir zu reproduzieren ;)

    The initial world update indeed had a bug which caused the server to ignore the seed, but IIRC that was fixed with the first hotfix back then :thinking: But if the world was created before the fix, that seed will not be used (instead the server probably uses the default seed, which is 1). The server will not overwrite that setting in the server.properties btw (because the seed there will be used now if you create a new world, for example) - more precisely, that setting doesn't represent the currently used seed, instead it is the seed that will be used when creating a new world^^


    The actual seed is stored in the Meta.db, but when starting the server, the server also prints the "World infos" to the log (which contain the currently used seed) :)


    I couldn't reproduce any issues related to the seed unfortunaately... a seed entered for the dedicated server will produce the same world in singleplayer and vice-versa. But this only applies to newly created worlds (or worlds which were created after the fix mentioned above) ;)

    Basically it would be indeed quite useful if there was a way to access built-in game objects :thinking: The only problem would be to implement that in a consistent and reliable way... objects like furniture are bound to a chunk, so if the chunk is regenerated (e.g. if the player comes back after walking away), the object prefab would be loaded again (missing any changes you've done to it in the meantime) :/


    But probably it would work if the game always keeps track of all modifications that had been done through the API - if the game then reloads the object prefab, it would have to go through that list again and re-apply all changes. This approach may have some minor performance implications (especially when doing lots of modifications)... but we'll think about adding such a feature ;)


    However, in the meantime, you could load the object you're looking for as Prefab: You could load the asset from the game files (for the brazier, it would be PrefabAsset.loadFromGame("Models/Objects/Brazier/brazier1.prefab"); - but you could also get the relevant paths from the definitions). You could then disable the childs manually with prefab.setActive() (the brazier has two childs called "fire" and "light") and add your own, custom childs ^^

    Thank you, adding underlines worked, I just thought that using same name as property have in shader graph will be enough

    Basically the "Reference" field of the Shader Graph property is the relevant name when accessing the material parameter - typically it begins with an underscore ^^


    Another small thing that was probably not reported - any definitions that are provided by object.getDefinition() will be null in the world if it will be reloaded. They works fine only with first world loaded after game was launched

    Thanks for letting me know! Apparently the definitions aren't reset properly... the game internally caches the "API definition" object upon first call, but that reference becomes invalid after reloading the API... we'll try to get this fixed for the next update ;)

    You mean an event that gets triggered when an npc grows up? I will put that on our to-do list :)

    Wir müssen uns mal Gedanken machen, wie wir das Einbinden eigener Items am besten ermöglichen wollen :thinking: Einerseits ist es sinnvoll, wenn ein möglichst einfacher Weg bereitsteht. Andererseits sollte aber auch die API Zugriff darauf erhalten, sodass auch komplexere Items möglich sind (wie paulevs schon erwähnt).


    Es wäre natürlich suboptimal, wenn es zwei verschiedene Systeme dazu gäbe (eines was zB auf Textdateien basiert, und eines, was die API verwendet)... eine Option wäre vll es über die API zu lösen, wir aber zB ein fertiges Plugin dafür bereitstellen (ähnlich wie der CustomItemLoader in der Java Version). Der einzige Nachteil ggü. deinem Vorschlag wäre dann, dass ein User zusätzlich dieses Plugin installieren müsste. Der Vorteil aber wäre, dass ein Plugin-Ersteller volle Kontrolle erhält und auch speziellere Items einbauen könnte (bzw. auch Item-Arten, die es so noch nicht im Spiel gibt) ^^


    Vll ist aber auch eine Hybrid-Lösung möglich (ähnlich wie die Area Protection, die zwar einerseits im Spiel integriert, andererseits aber auch der API zugänglich ist).


    Generell werden wir uns diesem Thema aber vmtl. erst widmen können, wenn die neue Version die Java Version ersetzt hat ;)

    Eine Karte wird es auf offizieller Seite in Zukunft geben, eine Minimap hingegen wahrscheinlich nicht. Vielleicht wird uns das Team von JIW-Games eine passende API-Schnittstelle dazu bereitstellen?

    Genau, eine Karte wird es definitiv geben, eine Minimap hingegen ist erstmal noch nicht geplant... es gab aber für die Java Version mal Überlegungen, dass man ggf. ein GPS-Gerät einbauen könnte, was einem dann eine Minimap beschert. Evtl. könnte man diesen Ansatz weiterverfolgen ^^


    Wenn es eine Karte gibt, wird es auf jeden Fall auch für die API eine Funktion geben, um das Kartenmaterial auszulesen.


    Derzeit ist es aber theoretisch auch so bereits möglich, eine Karte über die API zu generieren (basierend auf dem Terrain) ;)

    Es sieht so aus, als wenn der Server keinen Zugriff auf den Temp bzw. tmp Ordner hat :thinking: Der JDBC SQLite Treiber entpackt seine benötigten Libs standardmäßig in diesen Ordner (das war auch in der Java Version so), und wenn der Zugriff verwehrt wird (durch fehlende Berechtigungen etc), kann SQLite leider nicht von der API verwendet werden (das Portals Plugin benötigt aber SQLite).


    Wenn du bei einem Hoster bist, dann kannst du das selber leider nicht ändern, sondern lediglich der Hoster könnte das anpassen :/ Ggf. kann der Support des Hosters dir da aber weiterhelfen.


    Wir können das ansonsten auch mit dem nächsten Update anpassen, sodass in dem Fall ein anderer Ordner verwendet wird... leider wird es wohl noch ein paar Wochen dauern, bis das nächste Update verfügbar sein wird :silenced:

    Hmm, that's not a problem, but what is the default seed so I can replicate it on a test server? :D

    The default seed is 1 ^^


    However, re-using the same seed name does not yield the same world. :( I believe it just used some random seed instead of name listed but did not DB record what seedID it used.

    Oh, that's weird :wat: Unfortunately I wasn't able to reproduce the issue on my end :thinking: Adding a seed to World_Seed in the server.properties file should be stored in the database (but only when a new world is created of course). The same seed should also always result in the same world (only exception: npc spawns don't rely on the seed, so when reusing a seed, you will get the same world, but different animals will spawn).


    However, apparently there is an issue with the server.properties file if the entry contains a = - the game can't read that line then and resets that property to the default value (so if you seed contains a =, for example, it won't work unfortunately) :/

    After some code and log analysis I found that it happened when Prefab was not loaded from asset bundle (incorrect argument for loadFromAssetBundle) and setMaterialParameter was called for that prefab.

    Oh, yes, I can confirm that this indeed results in an infinite cycle :wat: Thanks for letting me know, we will fix that with the next update!


    When prefab is loaded correctly the bug is missing, but setMaterialParameter is not working for me. I'm trying to set color parameter, probably this is a reason

    Hmm... that should basically work. Unfortunately the setMaterialParameter() method does not have an override which accepts a color object, but you could just use a Vector4f for that :)


    Also make sure to provide the correct property name (the "parameter" parameter^^). It you're using the default HDRP Lit shader, the main color property is "_BaseColor", for the default HDRP Unlit shader it's "_UnlitColor".

    IIRC there was unfortunately a bug in the first world update which caused servers to not generate a random seed during creation if the seed setting was empty :/ The game then falls back to a default seed.

    Ich dachte da an registerMouseButton(Links,Rechts,Mitte,Rad) ähnlich wie bei player.registerKeys zum aun und aus schalten

    Würde es denn ggf. reichen, nur eine setListenForMouseInput(); Funktion zu haben, um Maus-Input generell ein- und auszuschalten? Es gibt ja nur wenige Maustasten, sodass ich nicht weiß, ob wirklich einzelne Tasten registriert werden müssten, oder was meinst du? ^^


    Ich hatte für die Konvertierung der Farbe vom Hex:FFFF FFFF = DEC:4 294 967 295 Probleme weil der Integer ja "nur" bis +2 147 483 647 geht, aber über den umweg das aus einem Long zu hole, den dan zu einem Integer machen und dann kann ich das erst richtig mit ColorRGBA(int rgba)

    *Eigentlich* sollte das kein Problem darstellen, da ein Integer trotzdem 4.294.967.296 verschiedene Werte repräsentieren kann. Da Java leider nur vorzeichenbehaftete Datentypen kennt, geht der Bereich dort halt von -2.147.483.648 bis +2.147.483.647, was aber normalerweise kein Problem darstellen sollte (also zumindest bei den Funktionen des Spiels, welche einen int rgba Wert akzeptieren - aus 0xFFFFFFFF wird dann eben -1) ;)

    Oder bist du auf eine Funktion in der API gestoßen, die damit nicht korrekt umgehen kann?

    That's weird :wat: The 1st line is quite normal, it happens if any component was changed before the prefab was fully loaded (usually there is a small delay until a prefab is fully loaded at the client), the 2nd line then indicates that the prefab was loaded and the material parameter was assigned... I couldn't reproduce it on my end unfortunately, so I'm wondering how this happened exactly :thinking:


    Did you change the material parameter for the prefab parent, or any child element?


    Do you mind sending me the prefab (or more precisely, the AssetBundle) and the code to change the material parameter, so I could try to reproduce the issue? ;)

    In the API, you could use World.getSeed() to get the actual seed of the world. Alternatively you could use an SQLite editor to open the "Meta.db" database in the world folder - there is a table "worldinfos" which contains the seed ;)

    Beim Server werden Beispielpermissions mitgeliefert, die befinden sich im Ordner Permissions.Example (der muss dann einfach nach "Permissions" umbenannt werden). Darin ist die default.json Permission, die für jeden Spieler gilt. Im "groups" Ordner ist eine Beispielpermission für eine Gruppe, die man zB "Admin" nennen kann (nicht zu verwechseln mit richtigen Admins, die in der server.properties eingetragen sind) ;)


    Dieser Thread enthält generell mehr Informationen zu Permissions: Permissions [New Version]


    Richtige Admins in der server.properties sollten aber eigentlich standardmäßig schon keinen Einschränkungen bei Blaupausen unterliegen :thinking: