Posts by red51

    Basically this is covered by the PlayerUpdateStatusEvent ;) Unfortunately the bone status is not fully exposed there yet... you can check if event.getType() is "BrokenBones", but unfortunately you can't determine if this event breaks or heals the bones... you could, however, check if the bones are currently broken (if they're already broken, the event is most likely triggered because the bones are healed or vice versa) ^^

    Basically this works like in the Java version, i.e. you extract plugins in the "Plugins" folder in the game directory ;) So you basically just extract the plugin folder from the zip file. If the plugin is not shipped inside a folder (i.e. if there is only a .jar file), you have to create a subfolder for it manually.


    If so, can you please tell me where to find the one that sets claim areas? Thank you!

    There is a built-in area protection in the game (accessible in creative mode via F9), but unfortunately self-claim isn't implemented yet (so admins have to set up and assign areas manually)...


    The only protection plugin out there atm is this one: https://forum.rising-world.net/thread/12664

    To install it, create a new folder called "WorldProtection" in the "Plugins" folder and extract the "WorldProtection.jar" from the zip file there ;)

    Sorry für die späte Antwort, aber falls sowas nochmal passieren sollte (also der Grillspieß zurückbleibt und scheinbar nicht zerstörbar ist), könntest du uns evtl. einen Report senden? :) Dann können wir einmal genauer nachschauen, warum das passiert ist :saint:

    Um einen Report zu senden, öffne einfach die Konsole (^) und gib dann report ein. Füge ggf. noch einen kleinen Hinweis hinzu (zB "Grillspieß unkaputtbar" o.ä)^^

    Sorry for the late response, but nested radial menus should actually work ;) You could just call player.showRadialMenu() in the callback again. Just make sure that in the outer radial menu "closeOnSelect" is set to false, otherwise it won't work properly:


    Java
    player.showRadialMenu(icons, entries, null, false, (selection) -> {
    player.showRadialMenu(icons2, entries2, true, (selection2) -> {
    System.out.println("Selected: " + selection2);
    });
    });


    We'll also add a new player.hideRadialMenu() method with the next update which gives more control over showing and closing radial menus :)

    Unfortunatly you can't set the background color of the chat box atm :/ You could only change the font size (Game_ChatFontSize in the config.properties file), but probably that wouldn't really help in this situation...


    However, maybe we can add a setting for the background color with the next update ;)


    But in the meantime, you could also achieve that through the API btw:

    Unfortunately there is an engine bug in the Unity version the game is currently using (2022.2), which prevents the game from running on Apple Silicon (M1)... :/ I'm so sorry about this inconvenience, but unfortunately it's out of our control because we had to wait for Unity to fix this issue...


    However, this issue was supposedly fixed by Unity in their recent release. We haven't fully verified that yet, but most likely you should be able to play the new version again after the next update :)

    Modular snapping indeed does not work if the blueprint contains terrain, as suspected by paulevs ... it's weird if your blueprint does not contain any terrain and still doesn't support snapping :wat: Do you mind uploading the blueprint in question here? Alternatively you could send it via PM to me, so I can take a closer look at this issue ;)

    Ein Zurückimportieren funktioniert leider nicht :/ Beim Export wird die Blaupause in ein 3D Modell umgewandelt, welches dann in einem beliebigen Modelleditor bearbeitet werden kann (zB Blender, Cinema4D, Maya, 3d Studio Max etc). Dabei gehen aber die eigentlichen Informationen der Blaupause verloren, also welche Bauelemente an welcher Position vorhanden sind, das Spiel kann das also nicht einfach so wieder importieren.


    Das Exportieren kann man eher als technische Funktion betrachten... sinnvoll ist es zB dann, wenn man die Blaupause mit einem 3D Drucker ausdrucken möchte, wie von Yaromid erwähnt. Auch für Modding bzw. die Plugin API kann das hilfreich sein ^^

    Zu welchem Zweck werden die Shader denn benötigt? ^^ Momentan haben wir zumindest keine unmittelbaren Pläne, die Shader zu veröffentlichen... der Nutzen für die API wäre vmtl. insgesamt auch eher überschaubar, da viele der Shader nicht ohne Weiteres verwendet werden können (zB müssen bei Pflanzen Zusatzdaten in den Meshes gespeichert werden, damit Dinge wie Wind korrekt funktionieren etc) :silenced:

    Besteht das Problem denn weiterhin? Wenn das Laden bei 5% hängenbleibt, dann heißt das, dass keine Netzwerkverbindung zum Server aufgebaut werden konnte. Das kann leider viele Ursachen haben (kein Internet, Firewall funkt dazwischen, Server generell nicht erreichbar etc).

    Wenn du sagst, dass ein Neustart des Servers das Problem behebt, dann wäre vll noch interessant zu wissen, ob der Server denn generell mind. 1x alle 24 Stunden neugestartet wird? Wenn das nicht der Fall ist, dann können leider allerlei Probleme auftreten.

    Ansonsten wäre ggf. ein Serverlog hilfreich von dem Zeitpunkt, wenn das Connecten nicht funktioniert ;)

    Ja, der AssetBundles-Browser von Unity macht das nicht!

    Was meinst du denn jetzt? Dass das öffnen der Asset Bundles in Unity 3h dauert, oder wenn du es über die API im Spiel laden möchtest? :wat: Um welches Asset Bundle handelt es sich denn genau?


    Ja, einfach Text-Datein lesen. Die Rückgabe eines byte[] sollte voll ausreichen :D

    vieleicht byte[] data =TextAsset.loadFromAssetBundle(AssetBundle bundle, String path) so in die Richtung.

    Aber vieleicht ist das besser, das gesamte Pake von TextAsset.

    Also du möchtest quasi nur auf API Seite die Möglichkeit haben, den Text eines TextAssets auszulesen? Also im Grunde einfach nur sowas:

    Java
    TextAsset asset = TextAsset.loadFromAssetBundle(bundle, "mytext.txt");
    //Get text
    String text = asset.getText();
    //Get raw bytes
    byte[] bytes = asset.getBytes();


    Meinst du hiermit, man könnte dem Bundel noch Properties mitgeben :thinking: klingt Verlockend, aber denke das wird Komplizierter, also muss nicht sein :saint:

    Nein, ich meinte damit das, was du ja im Grunde selber geschrieben hast: Nämlich ob man einen String, also einen Text aus einem TextAsset auslesen können soll ^^


    Dabei ist mir noch aufgefallen das player.getEquippedItem() immer NULL zurück gibt, das hatte glaube ich Patrick schon erwähnt wo er im Inventar getestet hatte.

    Ja, leider ist die Item API generell noch sehr unvollständig (auch was Inventar usw angeht)... das werden wir auf jeden Fall noch ändern ;)


    Kann ich das [H] "Item weckstecken" ausführen?

    Nicht direkt... indirekt hätte man es mit "setEquippedItem()" umsetzen können, doch leider funktioniert auch das noch nicht... evtl. macht es aber Sinn, ggf. noch eine eigene "unequipItem()" Funktion o.ä. zu haben :thinking:


    Ich habe versucht ein Radial Untermenü zu machen, dabei ist mir aufgefallen das es aktuell wohl nur ein Menü gibt

    Du kannst durchaus verschachtelte Radial-Menüs machen: Im Callback des Radial-Menüs kannst du dafür einfach erneut player.showRadialMenu() mit den aktualisierten Werten aufrufen. Dafür sollte im oberen Radial-Menü aber "closeOnSelect" auf false gesetzt sein ;)


    Java
    player.showRadialMenu(icons, entries, null, false, (selection) -> {
    player.showRadialMenu(icons2, entries2, true, (selection2) -> {
    System.out.println("Selected: " + selection2);
    });
    });


    Wehre es möglich das Radialmenü als UIRadial zurück zu geben und es wehre schön wenn mann es ausblenden und beenden könnte, also das Hauptmenü Ausblenden wenn man im Untermenü ist

    Leider ist das nicht so einfach möglich, da das Radial-Menü ein Sonderfall ist (und daher nicht alle Funktionen eines UIElements unterstützt)... unmöglich ist es aber nicht, dafür müssten wir aber erst einige Anpassungen vornehmen. Ggf. können wir sowas in Zukunft anbieten, momentan ist aber die player.showRadialMenu() der einzige Weg :/

    If such a player/client stays on the server due to a high value, can it also lead to disruptions for everyone else?

    Not necessarily. It depends on whether the illegal state was caused by desync, or by a bug in the game. But in the worst case there will just be a desync between this client and his actions on the server.


    If you're still experiencing illegal state kicks, please let us know, so we can take a closer look at this to find out whether or not it's caused by a bug ;)

    It sounds like the main issue is that you call validateText when pressing the button, but since you have to wait for the callback results of multiple text fields, you can't just continue there? There is unfortuantely no way to get the text content of a text field directly (because the server first has to query if from the client)... but you could try the PlayerUIInputTextEvent - it's called once the player either presses enter (after typing a text) or when the text field lost focus. You could move the validation there and store the result for that text field, so when the player presses "Submit", you could just rely on the stored validation result :)

    Die Berechtigungsgruppe "admin" ist einfach nur eine Gruppe, die zufällig "admin" heißt, das hat erstmal noch nichts mit einem Admin bzw. Adminrechten zutun ;) Die Gruppe könnte auch "serverinhaber" oder auch einfach nur "dude" heißen - ausschlaggebend ist nur, was drin steht.


    Grundsätzlich gibt es die Admins, die in der server.properties eingetragen sind (mit ihrer UID), das sind "klassische" Admins. Ihre Rechte werden nicht von den Permissions beeinflusst, es sei denn, man stellt Permissions_AdminsFullPermissions in der server.properties auf false. Wenn man aber Kontrolle über die Berechtigungen von Admins möchte, muss man entweder Permissions_AdminsFullPermissions ausschalten (oder Admins ganz austragen aus der server.properties) und diese Personen einer Berechtigungsgruppe zuweisen (zB der "admin" Gruppe).

    Um was für ein Objekt handelt es sich denn genau? Ganz so einfach funktioniert das leider nicht direkt: Du musst dafür irgendeine Form von Serialisierung bzw. Deserialisierung durchführen. Ein paar Objekte (zB String) kannst du direkt zu einem byte[] umwandeln und wieder zurück, bei anderen Objekte hingegen musst du dich selber darum kümmern.


    Java bietet von Haus aus das Serializable Interface - wenn dein Objekt nur primitive Datentypen (oder andere Serializable Objekte) enthält, kann es damit selber die Serialisierung und Deserialisierung durchführen. Wenn dein Objekt also das Interface Serializable implementiert, kannst du es zB mit einem ObjectOutputStream und ObjectInputStream serialisieren und deserialisieren (mit writeObject() und readObject()):

    Java
    //Convert a byte array into an object via Serializable interface
    try(ObjectInputStream is = new ObjectInputStream(new ByteArrayInputStream(array))){
    MySerializableObject obj = (MySerializableObject) is.readObject();
    }


    Alternativ kannst du deine eigene Serialisierung durchführen, zB mithilfe eines ByteBuffer. Die Variante ist zwar nicht ganz so bequem, allerdings wesentlich performanter und in kritischen Situationen daher zu bevorzugen. Beispiel:



    In manchen Fällen i.V.m. Datenbanken ist es sonst aber auch manchmal eine gute Option, wenn die einzelnen Felder auch als einzelne Daten gespeichert werden. Das bietet sich nicht immer an, aber bei Dingen wie Positionen oder Rotationen kann man das durchaus machen. D.h. die Datenbank hätte nicht eine einzelne Spalte "position", sondern drei Spalten "x", "y" und "z" (wo direkt die 3 Floats eines Vectors gespeichert werden). Performancemäßig am schnellsten.

    Sachen die sich immer drehen (Motor) oder frei drehen sind schon möglich.

    Ich habe mit noci einige Tests mit Unity Physik gestartet und es funktioniert :)

    Z.B. ein Wasserrad mit "Hinge Joint" gebastelt und noci hat es bei sich eingebaut

    und es dreht sich.

    Ja, Prefabs, die über die API gespawnt werden, können alle physikalischen Komponenten von Unity enthalten und sie verhalten sich dann auch erwartungsgemäß :) Auch die Grundklasse GameObject erlaubt es, zur Laufzeit neue Komponenten hinzuzufügen (also auch physikalische Komponenten), dann ist das Konfigurieren allerdings schwieriger.

    Über die API gespawnte physikalische Komponenten (als Teil eines Prefabs etc) sind im Multiplayer jedoch nicht automatisch synchronisiert (was in vielen Situationen aber auch nicht unbedingt möglich ist, zB bei einem Wasserrad ist es ja egal, ob es bei jedem Spieler wirklich exakt die gleiche Ausrichtung zur gleichen Zeit hat, da gehts meist nur darum, dass es sich dreht)^^


    Leider hilft das aber auch nur, wenn man zB direkt ein fertiges Modell oder Prefab hat, was man drehen oder bewegen möchte :/ Selbstgebaute Strukturen können auf dem Wege leider nicht in Bewegung gesetzt werden... aber wie gesagt, das ist als spieleigenes Feature auf jeden Fall geplant (unabhängig von der API, wobei die API dann natürlich auch Zugriff darauf bekommt) ;)

    Alerdings wenn ich Versuche:

    Achso, die einzelnen Areas sind null, nicht das Array an sich? :wat: Das kann ich bestätigen... das werden wir mit dem nächsten Update fixen ;)


    8| interface.bin mit 144Mb dauern bei mir schon über 50min. :lol: hätte ich nicht gedacht

    Was dauert so lange? Das Asset Bundle in Unity zu öffnen? 8|


    Könnte man neben einem TexturAsset auch ein TextAsset Laden? So das im Bundel zu einem Prefab noch ein Vorschaubild und Beschreibung platzieren kann ^^

    Was soll das TextAsset denn können? Oder soll das einfach nur ein Weg sein, einen String aus einem AssetBundle zu erhalten?


    Oke, also direckt habe ich keine Abgeschaltet

    Ja, wenn keine Npcs ausgeschaltet wurden (beim Erstellen der Welt), dann ist es gewollt, dass die Funktion null zurückgibt ;)


    Kann ich hier HudLayer/hudContainer/leftContainer/buildingStatusContainer/transformStatusContainer/statusLabel rein Schreiben?
    Im Style ist das ja nicht für den Text möglich, aber am Liebsten würde ich schon dein Baumenü nurzen
    Mit player.addUIElement(UIElement, UITarget.HUD); komme ich ja auch nicht direckt bis zum HudLayer/hudContainer/leftContainer/buildingStatusContainer/transformStatusContainer/ um dort eventuell nur einen eigenes UILabel zu Platzieren
    :saint: Kannst du da was anbieten, oder ist die gefar dann zu groß, das dass Spiel Instabiel wird

    Direkt bestehende Texte des Spiels ändern kannst du leider nicht, aber du kannst eigene Elemente einem beliebigen Ziel hinzufügen mit Internals.addUIElementToPlayer() :)


    was habe ich im Phat Vergessen?

    Sorry, das hätte ich etwas genauer konkretisieren müssen: Wenn Assets aus dem Spiel geladen werden, erwartet das Spiel, dass der Anfangsbuchstabe großgeschrieben ist (also Interface statt interface). Beim restlichen Pfad ist das egal, es geht wirklich nur um den ersten Buchstaben.


    Wir werden das mit dem nächsten Update ändern, sodass Klein-/Großschreibung dabei keine Rolle mehr spielt, aber wenn du aus dem kleinen i ein großes I machst sollte es jetzt schon klappen ;)