Witam, troszkę ogarnąłem pisanie pluginów w bukkit (minecraft). Teraz pisze plugin dla mojego serwera. Ma za zadanie po prostu teleportować gracza po wpisaniu komendy i poczekaniu 3 sekund. (Przy okazji teleportuje gracza zależnie od danej permisji (która określa drużyne (które sobie wymyśliliśmy na serwerze)) dlatego nie może być to plugin normalnie pobrany z internetu).
Niestety nie wiem jak przerwać wykonywanie się pluginu po ruchu gracza.
Player zmienna = (Player)sender; Pobiera dane kiedy gracz wpisuje komendę
Wykminiłem że można zrobić tak:
Player zmienna2 = Bukkit.getPlayer(zmienna.getName()); Wywołuje to za każdym razem w pętli (kod na dole) lecz pobiera kordynaty takie same jak w wcześniejszym wariancie.
Kod (tylko ten który coś robi): / kod na wklejce (czytelniejszy): http://wklejaj.pl/7443
if(sender.hasPermission("ho.szymon")) { World w = Bukkit.getWorld("survival"); Location l = new Location(w, -502, 68, -396); Player cel = (Player)sender; sender.sendMessage("gracz: " + cel); //Location p = new Location(cel.getLocation().getWorld(), cel.getLocation().getX(), cel.getLocation().getY(), cel.getLocation().getZ()); double xs = cel.getLocation().getX(); double ys = cel.getLocation().getY(); double zs = cel.getLocation().getZ(); double xz; double yz; double zz; sender.sendMessage("x = " + xs); sender.sendMessage("x = " + ys); sender.sendMessage("x = " + zs); Player zp; //czekanie try { sender.sendMessage("§9Nie ruszaj się przez §43 sekundy §9aby teleportacja została dokonana!"); for(int i = 0; i <= 3; i++) { zp = Bukkit.getPlayer(cel.getName()); Thread.sleep(1000); xz = zp.getLocation().getX(); yz = zp.getLocation().getY(); zz = zp.getLocation().getZ(); //Location s = new Location(cel.getLocation().getWorld(), cel.getLocation().getX(), cel.getLocation().getY(), cel.getLocation().getZ()); if(xz != xs || yz != ys || zz != zs) { sender.sendMessage("§4Poruszyłeś się! Teleportacja nie została wykonana!"); return false; } sender.sendMessage("§b//for -------------------------------"); sender.sendMessage("x = " + xz); sender.sendMessage("x = " + yz); sender.sendMessage("x = " + zz); sender.sendMessage("§b//for -------------------------------"); } } catch(InterruptedException ex) { sender.sendMessage("§4Błąd krytyczny!"); sender.sendMessage("§4Błąd: §7catch został uruchomiony w sekcji czekania"); sender.sendMessage("§4Skontaktuj się z administracją! §6(§bKubek§6/§bKubSu§6)"); return false; } //END czekanie ((Player)sender).teleport(l); sender.sendMessage("§2Pomyślnie zakończenie teleportacji§b!"); return true; }