• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Für eine bestimmte Zeit immer dorthin teleportieren

banyan

Redstoneengineer
Registriert
25 Dezember 2014
Beiträge
34
Diamanten
300
Heyho!

Hatte den heutigen Tag sehr viel mit dem MoveEvent zutun gehabt, und mir hängts langsam^^

Deswegen hab ich mich dazu entschieden, einfach den Spieler jeden Tick zu einem Ort hinzuteleportieren, um ihn zu freezen.

Gibts irgendwie ne Möglichkeit, ihn für jeden Tick so und so viele Sekunden lang zu teleportieren?
Und danach soll er für so und so viele Sekunden da hin tpt' werden, etc.
Hätte mir das vorgestellt mit ner Schleife?

MfG
 

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Öhm ist der Speed Effekt ab einer bestimmten stärke nicht wie ein Freeze?
Und das Player Move Event ist Client Seitig der Server bestätigt es nur und tpt den Spieler notfalls zurück aber mit etw. Verzögerung.
 

banyan

Redstoneengineer
Registriert
25 Dezember 2014
Beiträge
34
Diamanten
300
Das PlayerMoveEvent sollte man in Ruhe lassen, wenn es nicht unbedingt erforderlich ist.

Warum willst du einen Spieler an einer Position festhalten?

Wegen ner Plugin Idee von mir.
http://wiki.bukkit.org/Scheduler_Programming/de

Alternativ kannst du auch ein Käfig aus Barrikaden um ihn bauen, so dass er nirgends hingehen kann.

Ja, wollte das aber mit nem Plugin machen, weils mir sonst zu "unprofessionell" wäre^^
 

GPSforLEGENDS

Vorarbeiter
Registriert
21 März 2014
Beiträge
289
Alter
85
Diamanten
300
Minecraft
GPSforLEGENDS
Ja, wollte das aber mit nem Plugin machen, weils mir sonst zu "unprofessionell" wäre^^
Und an welcher stelle habe ich gesagt das du das nicht über ein Plugin machen sollst? Man kann auch Blöcke über ein Plugin platzieren und auch wieder entfernen wenn sie nicht mehr gebraucht werden.
 

Baba43

Ehem. Teammitglied
Ehem. Teammitglied
Registriert
5 November 2012
Beiträge
869
Diamanten
60
Minecraft
baba43
Wegen ner Plugin Idee von mir.
Das ist mir schon klar, aber warum genau? Ist es wirklich so wichtig, dass sich ein Spieler keinen Zentimeter bewegen darf? Das PlayerMoveEvent wird unglaublich häufig aufgerufen, sogar wenn sich ein Spieler nur umsieht und überhaupt nicht bewegt. In den meisten Fällen ist es mehr als ausreichend, die Position des Spielers alle paar Sekunden zu prüfen.
 

Ff5w6W1k

Redstoneengineer
Registriert
9 Mai 2015
Beiträge
38
Diamanten
0
Also ich sag mal so, in einer 1vs1 Arena oder so, wo die 2 Spieler nur 5 Sekunden den Countdown abwarten müssen, bis sie aus dem Event genommen werden, ist das PlayerMoveEvent ja okay, aber ich/wir wissen ja jetzt nicht mal ansatzweise, was du eigentlich jetzt genau vor hast.
 

Sympel

Minecrafter
Registriert
11 Oktober 2016
Beiträge
17
Alter
25
Diamanten
300
Man kann ihm einfach Langsamkeit 255 geben, dann kann er sich schon mal nur mit springen fortbewegen. Um das zu beheben kann man ihm ein bestimmtes Level von Sprungkraft geben, da Sprungkraft ab einer gewissen Stärke die Sprunghöhe senkt und diese somit irgendwann fast 0 erreicht. In diesem Zustand ist der Spieler so unfassbar langsam, dass ein Moveevent eigentlich nicht mehr notwendig ist.
 

PSandro

Kuhfänger
Registriert
7 November 2016
Beiträge
51
Diamanten
302
Guten Abend zusammen!
Ziemlich lange her, als ich das letzte mal was mit Bukkit zu tun hatte. Trotzdem habe ich mich noch an folgenden Codeschnipsel erinnern können, der - zumindest in der Bukkit Version 1.8 - tadellos für deinen Zweck angewendet werden kann.
Code:
if (e.getFrom().getBlock() != e.getPlayer().getLocation().getBlock())
            e.setTo(e.getFrom());
Mir hat es damals enorm geholfen, einfach mal die Autocomplete Funktion zu nutzen und mir die Funktion der ganzen möglichen Methoden zu erschließen.
Hoffentlich klappt es damit.
Besten Gruß!


#Edit:

Wohl angemerkt muss man den Code im PlayerMoveEvent einsetzen ^^
 

banyan

Redstoneengineer
Registriert
25 Dezember 2014
Beiträge
34
Diamanten
300
Mein Fehler hab ja auch vergessen zu sagen das ich den Spieler in Gamemode 3 gesetzt habe :oops:.
Werd ich mal ausprobieren, genauso wie:
Man kann das verhindern, indem man die Hungerbalken auf 3 oder niedriger setzt.
___

Guten Abend zusammen!
Ziemlich lange her, als ich das letzte mal was mit Bukkit zu tun hatte. Trotzdem habe ich mich noch an folgenden Codeschnipsel erinnern können, der - zumindest in der Bukkit Version 1.8 - tadellos für deinen Zweck angewendet werden kann.
Code:
if (e.getFrom().getBlock() != e.getPlayer().getLocation().getBlock())
            e.setTo(e.getFrom());
Mir hat es damals enorm geholfen, einfach mal die Autocomplete Funktion zu nutzen und mir die Funktion der ganzen möglichen Methoden zu erschließen.
Hoffentlich klappt es damit.
Besten Gruß!


#Edit:

Wohl angemerkt muss man den Code im PlayerMoveEvent einsetzen ^^


Vom PlayerMoveEvent möcht ich erstmal bisschen Abstand nehmen :)
 

PSandro

Kuhfänger
Registriert
7 November 2016
Beiträge
51
Diamanten
302
Vom PlayerMoveEvent möcht ich erstmal bisschen Abstand nehmen :)
Auch wenn ich das nicht nachvollziehen kann, da das PlayerMoveEvent ja grundlegend der erste Ansatzpunkt ist, wenn es um Bewegung (oder in dem Fall eben keine Bewegung) geht, wünsch ich dir viel Erfolg bei der Verwirklichung deiner Idee.
Ich möchte trotzdem nochmal anmerken, dass die Lösung, das Problem über dieses Event zu lösen, in meinen Augen die beste ist. So sind auch weitere öffentliche Plugins diesen Weg gegangen.

Auszug aus https://www.spigotmc.org/resources/simple-freeze.18044/ :
Code:
  @EventHandler
  public void onPlayerMove(PlayerMoveEvent e)
  {
    Player p = e.getPlayer();
    if (((SFMain.frozenList.contains(p.getUniqueId())) || (SFMain.freezeAll)) && (this.plugin.getConfig().getBoolean("head-movement")) && (!p.hasPermission("sf.exempt")))
    {
      e.setTo(e.getFrom());
    }
    else if (((SFMain.frozenList.contains(p.getUniqueId())) || (SFMain.freezeAll)) && (!this.plugin.getConfig().getBoolean("head-movement")) && (!p.hasPermission("sf.exempt")))
    {
      Location pLoc = e.getFrom();
      pLoc.setPitch(e.getTo().getPitch());
      pLoc.setYaw(e.getTo().getYaw());
      e.setTo(e.getFrom());
    }
  }
 
Oben