Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21993

[Plugin pod bukkit] zatrzymywanie pluginu po ruszeniu się

$
0
0

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

 


Viewing all articles
Browse latest Browse all 21993