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;
}