Bedwars

Registriere dich, um den vollen Funktionsumfang des Forums ausnutzen zu können.
  • Hey Leute bei meinem Bedwars ist es so das man sein Bett mit einem Block zerstören kann bzw wenn man sein eigenes Bett abbaut spawnt dieses wieder aber in der 1 Sekunde kann man ein Block hin setzen und dann bleibt das Bett weg hat jemand eine Idee?

  • Du könntest einfach im BlockPlaceEvent dass bauen verhindern, sofern die Location die Location des Bettes ist und das Bett noch nicht abgebaut wurde.
    Diese möglichkeit fällt mir spontan ein.


    Was mich aber stutzig macht ist, dass das Bett eine Seukunde braucht, damit es neu spawnt. Welche Methode nutzt du um das Abbauen zu verhindern? Wenn du das BlockPlaceEvent verhinderst, dann spawnt das Bett in wenigen Ticks.


    ~Ameinsenbaer

  • Wenn es bei dir wirklich eine Sekunde dauert bis das Bett neu gesetzt wird und man dann dort einen Block plazieren kann, dann musst du das BlockPlaceEvent ander Stelle cancelln.

    Ich würde gerne einmal den Code sehen, mit dem du das abbauen des eigenen Bettes verhinderst, weil ich es schon seltsam finde, dass es eine Sekunde dauert, bis das Bett neu gesetzt wird.


    ~Ameinsenbaer

  • Cancel einfach das BlockBreakEvent wenn ein Spieler sein eigenes Bett abbaut, dann sollte das eigentlich nicht passieren dürfen. Es kann höchstens ein clientseitiger Grafikbug auftreten. Guck mal mit einem zweiten Account, ob der das Bett dann auch nicht mehr sieht.

  • Habe ich aber man kann in der kleinen Zeit wo das bett sich wieder Replact ein Block setzen und dann ist es weg

    Wenn man event#setCancelled(true) benutzt, gibt es serverseitig keine "Zeit, wo sich das Bett replaced", weil der Server es so ansieht, als wäre das Bett nie abgebaut worden.


  • Das ist der listener für das Bett

  • Es ist möglich, dass andere Plugins den Payload des Events überschreiben. Probier es am besten mal mit EventPriority.LOWEST, so wird dein Event zum Schluss aufgerufen und setzt auch als letzer ob das Event gecancelled ist / wird.


    Code
    1. @EventHandler(priority = EventPriority.LOWEST)
  • Es ist möglich, dass andere Plugins den Payload des Events überschreiben. Probier es am besten mal mit EventPriority.LOWEST, so wird dein Event zum Schluss aufgerufen und setzt auch als letzer ob das Event gecancelled ist / wird.


    Code
    1. @EventHandler(priority = EventPriority.LOWEST)

    Genau anders herum. LOWEST wird als Erstes aufgerufen. HiGHEST/MONITOR als letztes.

  • Könnte es vielleicht sein, dass während diesen Scheduler der Fehler liegt? Delayed bedeutet, dass etwas verzögert wird. Versuch mal einen normalen Scheduler.

  • Der Code ist doch aus dem Bedwars von ClayMC oder ?

    Kommt mir zumindest bekannt vor weil ich mir letztens das von denen mal anschauen sollte. cx


    Wie @Ameinsenbaer schon schrieb solltest du eventuell einfach mal probieren das BlockPlaceEvent zu canceln wenn der Block der Block des Bettes entspricht.