Posts by red51

A new update is now available, introducing "Points of interest" and many more changes!
Latest hotfix: 0.9 (2025-11-05)

    Ich habe den Beitrag mal in die Plugin-Sektion verschoben :saint:


    Das Problem ist also wenn ich das richtig verstanden habe, dass der Server nicht mehr richtig herunterfährt oder neustartet sobald das InputEvent verwendet wird? Ich konnte das Problem soweit leider nicht bei mir reproduzieren, zumindest unter Windows :wat: Der Server sollte also weiterhin regulär neustarten, außer im InputEvent wird irgendwas gemacht, was das verhindert oder blockiert... leider kann ich das momentan nicht unter Linux testen.


    Handelt es sich bei dir denn um einen Linux oder Windows Server? Ggf. wäre ein vollständiger Log hilfreich... unter Windows kannst du den bekommen, wenn du die RisingWorldServer.exe zB mit diesem Befehl startest: RisingWorldServer.exe 1> serverlog.log 2>&1 - dann sollte eine serverlog.log angelegt werden. Starte den Server dann mit dem "restart" Befehl neu, und wenn das nicht funktioniert, sende mir bitte einmal diese Log-Datei :)

    Hey red51, wann können wir mit dem nächsten Update etwa rechnen? :P In ein, zwei, drei, sechs Monaten? :D

    Schwer zu sagen, wann das Update genau kommt... grundsätzlich sind die Reittiere quasi fertig, aber wir arbeiten momentan noch an den Biomen & Höhlen. Letzteres ist zwar ursprünglich als separates Update geplant gewesen, aber das Problem ist, dass wenn wir jetzt die Reittiere veröffentlichen, wir erstmal für ca. 2-3 Wochen nicht mehr weiter an Biomen und Höhlen arbeiten können (denn in der Zeit würde das Reittier-Update in den Vordergrund rücken, d.h. zusätzlicher Aufwand für Hotfixes usw).


    Entweder wir finden in Kürze einen guten Punkt, an dem wir die Arbeit an Biomen & Höhlen erstmal unterbrechen können (damit das Reittier-Update raus kann), oder wir packen es doch zu einem großen Update zusammen... mal sehen...


    Unser oberstes Ziel ist natürlich der Austausch der Java Version, alleine auch aus finanzieller Sicht. Denn im Grunde haben wir an den letzten Updates ja kein Geld verdient, da die Updates in erster Linie an die Bestandscommunity gerichtet waren. Das ist auch wichtig und wir fühlen uns dem verpflichtet, doch langsam drückt auch der Schuh, dass endlich die neue Version auf der Storepage erscheinen kann (und hoffentlich auch ein paar neue Verkäufe generiert) :saint:

    Je mehr Updates es bis zu diesem Zeitpunkt gibt, desto weiter verschiebt sich das ganze leider (da wie gesagt, jedes Update für sich Arbeit erfordert). Natürlich ist es auch doof, wenn ewig kein Update kommt (und wenn Updates zu riesig werden, dann ist das Beheben von Bugs usw umso aufwändiger), daher müssen wir da den passenden Mittelweg finden.


    Nachdem die Java Version endlich ersetzt wurde können wir uns aber auch wieder kleineren (und damit häufigeren) Updates widmen :)


    Red hat sicher gerade ganz andere sorgen
    der kann auf hören wenn Unity das wirklich umsetzt

    ich drück dir alle daume das sie es nicht um setzten Red

    Vielen Dank! Diese Änderungen sind tatsächlich der purste Irrsinn :wat: Da Unity künftig jedes Mal eine Gebühr haben möchte, wenn ein Spieler das Spiel installiert, und diese Änderung auch rückwirkend gilt, bedeutet das, dass Unity auch für alle Java-Verkäufe aus der Vergangenheit kassieren wird (obwohl wir ja damit kein zusätzliches Geld einnehmen). Gleichzeitig würde die Gebühr fällig, wenn ein neuer Kunde das Spiel refunded (wir also gar kein Geld verdienen) oder kostenlos über Family Sharing spielt. Und selbst wenn jemand das Spiel illegal runterlädt und crackt müssten wir zahlen, was an Lächerlichkeit nicht mehr zu überbieten ist.


    Diese Änderung führt in der jetzigen Form zu unvorhersehbaren Kosten. Man muss mal abwarten, was letztenendes nun wirklich dabei herumkommt und ob Unity ggf. zurückrudert. Die Ankündigung hat jedenfalls bereits einen massiven Sh*tstorm ausgelöst (nachvollziehbar), und es sind auch haufenweise Spiele davon betroffen (Rust, 7d2d, VRChat, BattleBit usw) :thinking:

    Spieler mit identischem Namen sollte es auf einem Server nicht geben, d.h. wenn mehrere Spieler mit gleichem Namen connecten, dann werden die Namen durchnummeriert (mit vorangehendem Unterstrich) ;) Also der erste Spieler heißt noch "Musterspieler", der 2. Spieler heißt dann "Musterspieler_1", dann "Musterspieler_2" usw.

    Auf diese Art wird der Spieler in den Konsolenbefehlen auch angesteuert, also zB "kick musterspieler_2". Alternativ kann ansonsten in nahezu allen Konsolenbefehlen auch die eindeutige UID des Spielers verwendet werden (diese kann zB aus der Spielerliste heraus kopiert werden).


    Als Serveradmin kannst du übrigens auch Namen reservieren, d.h. an eine bestimmte UID binden. Dazu kann im Serververzeichnis eine Datei "reservednames.txt" angelegt werden und dort pro Zeile Name : UID angegeben werden. Beispiel: Musterspieler : 76561197960265728 würde dafür sorgen, dass nur noch der User mit der UID 76561197960265728 den Namen "Musterspieler" benutzen kann (dann gibt es auch kein "Musterspieler_2" usw mehr).


    Nicknames sind leider nicht möglich... das würde vmtl. auch ein paar Fragen aufwerfen, zB was passiert, wenn "Musterspieler" der Nickname "Dude" gegeben wird, aber es auch einen anderen Spieler gibt, der bereits "Dude" heißt? Bei Serveradmins (oder auch Stammspielern) ist es ggf. überlegenswert, sich den Namen stattdessen auf o.g. Weg zu reservieren ^^

    Oh achso :saint: D.h. dein neuer Minimalwert (im obigen Beispiel) soll dann 1271.881592 sein (das ist also die neue "0") und der Maximalwert 4896.146484 (die neue "999")? Bzw anders gesagt, du möchtest 1271 bis 4896 in den Bereich 0 bis 999 bringen?


    Gehen wir davon aus wir speichern unseren erlaubten Wertebereich (0-999) als Konstanten (MIN und MAX). Unsere Koordinate 1271.881592 speichern wir als $min und 4896.146484 als $max. Wir würden nun erstmal die Differenz zwischen $min und $max berechnen ($max - $min). Anschließend ziehen wir $min noch von unserem Eingabewert (nennen wir ihn $value, also die Koordinate, die du in den Bereich 0-999 bringen willst) ab und teilen das dann durch unsere neu berechnete Differenz: ($value - $min) / ($max - $min). Das ergibt einen Wert zw. 0 und 1. Fügen wir nun noch MIN und MAX hinzu, erhalten wir den Wert zwischen 0 und 999 (MIN + (MAX - MIN) * $value). In eine Funktion gepackt könnte das in PHP so aussehen:


    Code
    define("MIN", 0);
    define("MAX", 999);
    function getCoordinate(float $value, float $min, float $max) {
    //Wert in Bereich 0-1 umrechnen
    $value = ($value - $min) / ($max - $min);
    //Wert in Bereich zwischen MIN und MAX umrechnen
    return MIN + (MAX - MIN) * $value;
    }


    Beispielausgaben:

    Ich bin mir nicht sicher, ob ich die Problematik richtig verstanden habe :saint: Heißt das, du möchtest eine Weltkoordinate des Spiels auf den entsprechenden Map-Tile umrechnen (d.h. in dem Fall immer in den Bereich von 0-999 bringen)? In dem Fall ist der Modulus bzw. Modulo hilfreich: In den meisten Sprachen (einschl. PHP) ist das der % Operator. Bei einer Tile-Größe von 1000x1000 würde das zB so aussehen: 1271 % 1000 ergäbe 271, 4896 % 1000 ergäbe 896 usw (also immer einen Wert zw. 0 und 999).


    Wenn du auch den "Offset" des Map-Tiles möchtest (1271 wäre ja zB im 2. Tile, während 4896 im 5. Tile wäre etc) kannst du einfach eine Ganzzahldivision durchführen (in PHP könntest du dafür intdiv() verwenden). Beispiel: intdiv(1271, 1000) ergäbe 1 (also der 2. Map-Tile, wenn man bei 0 anfängt zu zählen), intdiv(4896, 1000) ergäbe 4 (also Map-Tile 5) usw ;)


    Oder habe ich das falsch verstanden und stattdessen möchtest du in deinem Beispiel, dass 1271.881592 = 0 entspricht und 4896.146484 = 999? Oder bin ich vll komplett auf dem Holzweg? :drunk:

    Sorry für die späte Antwort, wollte mich schon früher melden :drunk: Ich habe mir aber mal das Problem mit den Animatoren genauer angeschaut: Wenn du über einen Animator eine Material-Eigenschaft änderst, dann fügt Unity unter der Haube einen sog. MaterialPropertyBlock hinzu (was die normalen Material-Eigenschaften überschreibt). D.h. reguläre Änderungen über setMaterialParameter() haben keinen Effekt mehr (bis der Animator gelöscht wird).


    Leider bleibt der MaterialPropertyBlock auch nach dem Deaktivieren des Animators aktiv. Wir werden mit dem nächsten Update aber eine neue Funktion clearMaterialPropertyBlock() einbauen, mit welcher du den MaterialPropertyBlock löschen kannst ;) Das funktioniert aber nur, wenn der Animator deaktiviert wird (sonst fügt Unity sofort wieder einen neuen hinzu). Das könnte in deinem Fall dann zB so aussehen:

    Java
    //Disable component on main prefab element
    prefab.setComponentEnabled(null, "Animator", false);
    //Remove material property blocks from child element (first mat)
    prefab.clearMaterialPropertyBlock("Neu_Mimic_gehen/Cylinder.002", 0);


    Bis dahin wäre aktuell der einzige Workaround, den Animator zu löschen (danach kannst du ihn aber logischerweise nicht mehr verwenden). Das ist also nur sinnvoll, wenn du den Animator nicht mehr brauchst... Löschen kannst du ihn via Prefab.removeComponent() , also zB prefab.removeComponent(null, "Animator");


    Bis zu den Animationen hatte ich noch nicht gedacht, aber ja, hier wehre es interresannt ein Objeckt an einen Bone zu Befestiegen (Sowas wie Waffe oder Hut). Das sollte dann aber schon, irgendwie mit dem Client Verbunden sein. Also das mann ein ChildObject an einen Bone Binden kann, das ChildObject könnte man Ein/Aus Blenden

    Meinst du ein Hinzufügen an Bones bzw. Childs eines Prefabs, oder an beliebige Elemente im Spiel (zB Hände des Spielers oder eines NPCs)? Grundsätzlich wäre das möglich (und auch praktisch), das Problem ist nur, dass ein Löschen des Parents (zB wenn der NPC stirbt) automatisch das Prefab löschen würde... wir müssen mal schauen, dass wir das entsprechend abfangen :thinking: Wir machen uns dazu mal Gedanken ^^


    ^^ Ja, wie machst du das mit dem Schatten/der Schatten Seite?
    Deine Objecte sind niemals Schwarz solange Licht in der nähe ist ^^. Benutzt du den Standard Lit Shader?

    Aber wenn das zu den Geheimnissen gehört ist auch gut ;)

    Wir verwenden zwar einen eigenen Shader, allerdings sollte das keine große Rolle spielen :wat: Ich konnte das Problem tatsächlich mit deinen Prefabs reproduzieren... es scheint so, dass die Prefabs kein indirektes Licht erhalten. Offenbar schmeißt Unity beim Builden des Asset-Bundles die notwendigen Shader-Varianten raus ||


    Ich muss mal schauen, wie man das am besten verhindern kann! Ich melde mich nochmal, wenn ich weitere Infos habe.


    In Unity gibt es doch für Color den Default Mode und den HDR Mode, bei dem kann noch die Intensity eingestellt werden, wo die Farbe zu Leuchten begint.
    Ähnlich wie setMaterialParameter("", "Color", new Vector4f(1, 1, 5, 1));, da sehe ich gerade das ColorRGBA ja nur 0-100% kann und das bräuchte ein bereich von 0-100%+x%, :lol:

    Ich meinte den Multiplikator

    Achso :D Also grundsätzlich kann das ColorRGBA beliebige Farben repräsentieren (da die einzelnen Farbwerte als float gespeichert werden), d.h. auch Bereiche außerhalb von 0-1 sind möglich. Das Problem ist nur, dass so eine Farbe nicht mehr als int repräsentiert werden kann. Die API verwendet leider an vielen Stellen nur ints für die Farben.


    Da aber das Spiel bisher aber beim Colorpicker keine Intensität benötigte, fehlt diese Funktionalität... ich schaue mal, was wir da am besten machen könnten :thinking:


    Kann der ColorPicker in eine UI eingebaut werden?

    Leider ist das momentan nicht vorgesehen, da der ColorPicker bislang als eigenständige Message Box konzipiert ist...


    Ginge das auch für "GameObject" und "UIElement" :D

    Ja, das können wir grundsätzlich einbauen ;)

    1. Wenn 2 Personen in einer Truhe sind und einer von beiden raus geht wird der andere auch aus der Truhe geworfen und dabei ist es egal in welcher Truhe man ist. Das gleiche passiert auch wenn

    einer von beiden im Inventar ist, sobald einer aus eine Truhe geht wird der andere aus dem Menü geworfen.

    Das ist leider ein Bug, wie noci schon sagt. Der Bug hat sogar eine relativ banale Ursache: Wenn ein Spieler sein Inventar schließt, schließt das Spiel auch automatisch die Kiste. Das wiederum schließt das Inventar aller anderen Spieler, die ebenfalls auf diese Kiste zugreifen. Das werden wir noch beheben ;)


    Grundsätzlich unterstützt das Spiel aber den gleichzeitigen Zugriff mehrerer Spieler auf eine Truhe ^^


    2. hatte mein Mitspieler das Problem wenn er im Berg graben war das die Welt auf reist (nicht richtig ladet) sie Bilder

    Hmm... probiere am besten mal, die Welt neuzuladen, wie noci vorschlägt. Bestehen die Risse danach immernoch?

    Unfortunately your permissions don't contain any settings for images. It just works for you because permissions are ignored for server admins by default (you can disable this behaviour by setting "Permissions_AdminsFullPermissions" to False in the server.properties file btw).


    To define the image limit in the permissions, you have to set maxamount in the image category. If you want all players to be affected, it's sufficient to just change that in the default.json file (all group permissions inherit their permissions from that file). This is how image permissions could look like:

    JSON
    "image": {
    "maxamount": -1,
    "maxresolution": 512,
    "delete": false,
    "deleteown": true
    }


    This post also contains an overview of all permissions (including a description and examples): RE: Permissions [New Version]


    I've updated your default.json file, please find it attached (you can find the added "image" part after the "blueprint" part) ;)

    Files

    • default.json

      (3.42 kB, downloaded 236 times, last: )

    The problem indeed appears to be happening in the Portals plugin, as mentioned by yahwho , but in fact that seems to be just a follow-up error :thinking: According to the report you've sent, there is an error in the UnityBundleLoader plugin. This apparently causes issues when using the reloadplugins command.


    According to the log, an old version of the UnityBundleLoader plugin was used (0.0.1). I was able to reproduce the issue with that version, but it seems to be fixed with the latest version (0.0.2), so I would recommend to install the latest version of that plugin ;)

    Resetting the gap to zero by a command would be really helpful :D

    We could add a gap command to set an arbitrary gap for the currently active element directly (you could then just pass 0 to reset the gap) ;)

    No precision, that's right, but a way to switch to normal with backspace. in the unity-version it's like yahwho mentioned, very very unfriendly to set the gap distance to 0.

    So this means you want the precision to be removed and a hard-coded value to be used instead? Idk if that's really an improvement.


    The Java version didn't have a way to set the gap size to 0 either, and binding it to backspace may be a bit confusing (considering backspace already resets the rotation/scale).

    Grundsätzlich wäre das möglich, nur leider ist es schwierig, das als Option anzubieten... denn einerseits bestimmen diese Zusatzdaten, wie die Items im Inventar gespeichert bzw. serialisiert werden. Andererseits wird das Inventar immer serverseitig bestimmt, sodass zumindest im MP bei Clients abweichende Einstellungen auf Ecken und Kanten stoßen würden :/ Das umzusetzen wäre zwar kein Ding der Unmöglichkeit, dazu müssten wir uns aber mal Gedanken machen :thinking:


    Oder man legt das direkt als Standardverhalten fest, allerdings weiß ich nicht, ob das wirklich immer sinnvoll ist :monocle: Es gibt vmtl. auch Situationen, wo geringfügige Abweichungen in der Größe dazu führen, dass Blöcke im Inventar nicht mehr gestapelt werden (was das Inventar dann generell spürbar voller machen könnte)... das könnte ggf. ungewollt sein.

    Thanks for the log! As mentioned by noci , it's caused by an incompatible version of the "ToolsAPI" plugin. Replacing it with the latest version of that plugin should do the trick ;)

    Sorry for my late response, unfortunately I missed your initial post :/ But I'm glad to hear you managed to solve the problem :)


    As for the scheduler for the server........ god knows why its non functional.. I will get to the bottom of it eventually

    Hmm... if the scheduler contains any errors, the log usually provides more information about that :thinking: Do you mind sending me the scheduler file, so I can take a closer look at it? You can either upload it here or send it via PM to me :)

    Sorry ersmtal für meine späte Antwort! :saint:


    Zuerst war ich ein wenig Verwirrt da es kein Boolean Parameter gibt, aber als ich mich getraut habe den mit dem Integer (0/1) zu benutzen hat es ebenfalls geklappt.

    Unity verwendet intern keine bools für Material-Parameter (das wird einfach über floats abgebildet), aber wir könnten das der Einfachheit halber trotzdem zur API hinzufügen ^^


    red51 Jetzt habe ich nur das Problem das ich wenn der "Animator 2"[2.] Aktiv ist, kann ich nicht mehr "Shader"[2.] nutzen, warscheinlich überschreit die Animation die werte. Ich Habe versucht ihn mit der API zu Aktivieren oder Deaktivieren, leider ohne erfolg.

    Das ist merkwürdig :wat: Kannst du mir das AssetBundle (und den Namen des Prefabs) ggf. einmal zusenden? Dann kann ich versuchen es bei mir zu reproduzieren ;)


    Was ich auch noch gerne wüste, was mache ich mit invokeComponentMethod, klingt Spannend, aber konnte da, noch nix mit bewirken.

    Damit kann eine beliebige Methode einer Component aufgerufen werden. Die meisten wichtigen Methoden der wichtigsten Komponenten sind bereits exposed (zB die Animator- oder Material-Methoden), aber diese Funktion ist hilfreich für Dinge, die noch nicht nach außen getragen wurden. Beispiel: Wenn dein Prefab eine Rigidbody-Komponente hat, und du zB die WakeUp() Methode aufrufen möchtest, könnte der Code dazu so aussehen:

    Code
    prefab.invokeComponentMethod(null, "Rigidbody", "WakeUp");


    Oder die Translate() Methode der Transform-Komponente, bei der ein Vector3 als Parameter übergeben wird:

    Code
    prefab.invokeComponentMethod(null, "Transform", "Translate", new Vector3f(10f, 0f, 0f));


    Analog dazu gibt es noch die setComponentProperty() Methode, womit "Properties" statt Methoden/Funktionen aufgerufen werden können. Beispiel: Wenn du die Masse eines Rigidbody auf 100 setzen möchtest (in Unity ist "mass" ein Property), könntest du das zB so machen:

    Code
    prefab.setComponentProperty(null, "Rigidbody", "mass", 100f);


    Was ich mir noch Dringend :saint: wünsche ist das auslesen des Transform und eine Liste der enthaltenen Unterordner ^^ also jeden Tranform im Prefab mit Namen

    Schwierig... das Problem ist leider, dass dafür das Modell zusätzlich serverseitig geladen werden muss. Bei Prefabs aus AssetBundles ist das zwar nicht so das große Problem, aber zB FBX Dateien brauchen relativ lange zum laden... das würde leider ein sehr teurer Funktionsaufruf... :dizzy:


    Wir können mit dem nächsten Update aber eine neue "readLocalPosition()" bzw. "readWorldPosition()" einbauen, mit welcher von einem Prefab bzw. einem beliebigen Child die derzeitige lokale bzw. globale Position (und Rotation) ausgelesen werden kann. Der Aufruf ist dann an einen Spieler gebunden und arbeitet mit einem Callback (da die Position vom Client abgefragt wird - schließlich könnte sie theoretisch bei jedem Spieler anders sein, vor allem wenn eine Komponente zB animiert oder physikalisch ist). Ich weiß nicht, ob das in deinem Fall vll schon weiterhilft? :thinking:


    Dabei ist mir aufgefallen das ein Timer nicht das Optimale ist

    Warum? Für wiederholende Aufgaben ist ein Timer eigentlich die geeignete Lösung. Ansonsten kannst du sonst auch das UpdateEvent abgreifen, welches jeden Tick aufgerufen wird. Für komplexe Rechenaufgaben o.ä. wäre sonst auch ein klassischer Thread denkbar.


    Allerdings bräuchte man schon eien "kontinuirlichen Event" um z.B. die entfernung zum Spieler zu ermitteln, der müsste aber nicht auf jedem Tick hängen, vieleicht nur bei Spieler Bewegung, Change World, Load/Spawn, MoveToFinish :)

    Das Problem ist leider die Entkoppelung von Client und Server... da die API niemals clientseitig ausgeführt wird, sind Millisekunden-genaue Aufrufe leider nicht möglich (allein der Ping zw. Client und Server ist der begrenzende Faktor). In vielen Fällen aber ist ein Timer (mit einem Interval von 0) oder das o.g. UpdateEvent aber normalerweise ausreichend.


    Wenn du schon ein wenig zu NPC's und API sagen könntest :love: wehre das Super.

    Leider noch nicht :( Bisher ist da noch nicht viel in dem Bereich passiert, da wir momentan noch zu sehr mit anderen Features beschäftigt sind... sobald die Java Version endlich durch die neue Version ersetzt wurde haben wir hoffentlich mehr Luft dafür ;)


    Hier habe ich einfach mal ein Shader gebaut der die Basistexture Abdunkelt und als Emissiv raus gibt :thinking: das macht es erstmal
    Ist das der Weg den du auch genommen hast?

    Öhm... ist die Frage an mich gerichtet gewesen? :saint:


    Wenn du für die UI noch die Liste und Dropdown freigeben könntest wehre das Wunderbar <3

    Hehe, "freigeben" klingt ein wenig so, als müssten wir nur einen Haken setzen, damit die Dinge verfügbar werden :D Ein Dropdown Element ist in unserer UI leider generell nicht vorhanden bisher, stattdessen verwenden wir was anderes (siehe zB die Auswahlelemente für Dinge wie Auflösung etc. im Settings-Menü). Das wollen wir aber auch noch in der API abbilden ;)


    Es gibt zwar von UI Toolkit derartige Elemente, die haben wir aber nie verwendet (und auch deren Style nie angepasst), da diese vor nicht all zu langer Zeit leider nur im Editor verfügbar waren und nicht zur Runtime :/ Wir könnten das aber trotzdem in Zukunft integrieren und in der API exposen bei Bedarf.


    Eine List-View können wir allerdings leider nicht anbieten (da diese virtualisiert ist und das nicht über die API abgebildet werden kann), aber eine Scroll-View ist geplant (damit kann dasselbe erzielt werden) ^^


    Oder für die Nutzung von USS & UXML, noch einen kleinen Tip gibst, wie mann das geladen bekommt wenn beide StyleSheetAsset vorhanden sind :D

    UXMLs kannst du leider noch nicht laden, sondern nur USS Dateien (als StyleSheetAsset) ;) Die können einem UI Element dann via addStyleSheet() zugewiesen werden. Es können darin ja Klassen definiert werden, diese können dann via addToClassList() zugewiesen werden.


    red51, noch ein kleiner Fehlerbericht:

    Oh, danke für den Hinweis, das wird mit dem nächsten Update behoben :saint:


    Könnte eventuell bei dem ColorPicker noch die Intesity hinzugefügt werden, vieleicht mit einem weiteren Schalter HDR ^^

    Wie meinst du das mit der Intensity genau? :monocle:


    Mit HDR meinst du vmtl. eine Möglichkeit, RGB oder HSV Farbraum vorzugeben, oder?

    Sorry für die späte Antwort, aber wir können mit dem nächsten Update zumindest Attribute für die Klassen "ObjectElement", "ConstructionElement" und "Plant" hinzufügen ;) Da ein Sign i.d.R. auch ein ObjectElement ist bzw. dem zugehört (siehe Sign.getRelatedObject()), könntest du darüber Attribute speichern & auslesen ^^

    Animated GIFs are still planned, but we decided to not add them with the recent update because they consume a lot of memory... each frame of a gif is basically a separate image (in VRAM it's a lot larger than the original file size btw). In singleplayer, this usually isn't a huge issue at all, but in multiplayer, this could result in a lot of trouble... it's probably better if we release animated GIFs as a separate update ;)

    Sorry for my late response! In the new version, the setting is called Disable Hunger / Thirst (Survival only) in the Miscellaneous settings. If you turn that On, hunger and thirst will be disabled.


    So if you want hunger and thirst to be active, turn it to Off ;) It's not affected by peaceful mode, but these settings only work in survival mode (in creative mode, you never have hunger or thirst). Also please keep in mind that this only works in singleplayer - in multiplayer, this setting is determined by the server admin.

    Installation indeed works like in the Java version ;) Which plugins did you try to install? Is it in multiplayer or singleplayer?


    If a plugin cannot be loaded, the log file typically contains more information about what went wrong. You can find the "Player.log" file in the "Logs" folder in the "_New Version" subfolder (in the game directory), maybe upload it here :)