Spigot Beacon Bug beheben

Geschenke auf Origo können nun wieder vom Absender abgeholt werden, wenn diese noch nicht geöffnet worden sind.
Der Server wurde erfolgreich auf die Version 1.20.4 aktualisiert und nun wieder erreichbar.
  • Hol dir eine relativ aktuelle MCP-Version (Forge). Dann hier die passenden Methoden-Namen:


    -> World#updateEntities(). Hier die Schleife mit den tickableEntities. Spigot tickt hier immer nur einen Teil der Entities
    -> TileEntity#update(): Inteface
    -> TileEntityBrewingStand#update(): Dauert einfach etwas länger
    -> TileEntityChest#update(): Sinnvoll das ganze Zeug nicht jeden Tick zu prüfen.
    -> TileEntityEnchantmentTable#update(): Bücher drehen ist auch Bonus. Müsste der Server eigentlich gar nicht machen.
    -> MobSpawnerBaseLogic#updateSpwaner(): Das isAnyPlayerInRange() jeden Tick zu prüfen ist auch nicht unbedingt performant.
    -> TileEntityHopper#update(): Ja, macht Sinn nur alle paar Ticks nach neuen Items zu suchen.
    -> TileEntityBeacon#update(): Hier geht das eben schief, wegen dem Modulo. Hier hätte man es anpassen müssen.


    Das passiert, wenn der Profiler sagt: "Das braucht viel Zeit" aber man es dann einfach versucht durch weniger machen zu lösen. Weniger machen bedeutet weniger features. Hätte man es feingranularer gemacht (Hopper nur alle 8 Ticks, MobSpawner nur alle 200-800 (random!), ... hätte es niemanden gestört, weil die TileEntities so lange eh nur däumchen drehen.

  • Hier die Schleife mit den tickableEntities. Spigot tickt hier immer nur einen Teil der Entities


    Das erklärt dann selbstverständlich, warum es mit dem Modulo Probleme gibt. Dann sollte es aber doch nicht nur hier auf Terra Probleme geben, sondern auf jedem Server der Spigot nutzt. Das kann ich aber aus eigener Erfahrung nicht bestätigen. Oder macht es Spigot abhängig von der Anzahl an Entities, ob welche ausgelassen werden order nicht?


    Kannst du mir bitte den entsprechenden GitHub-Link o.Ä. zum Original- bzw. Forgecode geben?


    Wird schwer mit dem DMCA takedown: https://github.com/SpigotMC/Spigot-Server

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs,
    and the Universe trying to produce bigger and better idiots.
    So far, the Universe is winning.

    2 Mal editiert, zuletzt von BtoBastian ()

  • Oder macht es Spigot abhängig von der Anzahl an Entities, ob welche ausgelassen werden order nicht?


    Ja, die Schranke kann man pro Server einstellen. Die meisten Server reduzieren einfach die globale Anzahl an Entities und damit kommen sie nicht über diese Schranke.


    Kannst du mir bitte den entsprechenden GitHub-Link o.Ä. zum Original- bzw. Forgecode geben? Ich weiß nicht mal unter welchem Pfad diese Klassen zu finden sein sollen.


    0152-Allow-Capping-Tile-Entity-Tick-Time ;)


    Du musst TileEntityBeacon in den Spigot-Code rein laden. Die Commits sind im Endeffekt ein Git-log den du soweit zurückspulen musst, bis du an den ersten Commit kommst mit dem alle Orginal-MC-Dateien in den Quelltext geladen werden (deswegen veröffentliche ich den patch auch nicht: So etwas zu veröffentlichen verstößt eindeutig gegen die MC Eula).


    Ich hatte mir für das ganze ein eigenes Script geschrieben das die ganzen Patches raus zieht und ordentlich, einzeln anwendbar macht. Aber das ist auch schon wieder eingeschlafen seitdem ich den Ansatz von Spongeforge kenne. Der ist deutlich flexibler, moderner und kompatibler.