Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] z pluginem


rafalolxD

Rekomendowane odpowiedzi

Opublikowano

Dzień dobry. Uczę się pisać pluginy do bukkit'a i natrafiłem na pewien problem.Chciałbym po wejściu gracza zamknąć go w 'klatce'.

@EventHandler(priority=EventPriority.HIGH)
		public void event(PlayerJoinEvent event){
			Player p = (Player) event;
			Location loc = p.getLocation();
			int x = loc.getBlockX();
			int y = loc.getBlockY();
			int z = loc.getBlockZ();

i następnie chciałbym stworzyć instrukcję warunkową if(player x jest większe lub równe Player x + 2){to coś tam coś tam}.

Czy ktoś może wie jakby można było zrobić tą instrukcje , lub podać jakiś inny sposób na unieruchomienie gracza.

 

Wiem, że tematy dotyczące minkrafta,a powinny być pisane w dziale minecraft ale nie znalazłem tam jakoś odpowiedniego działu.

Opublikowano
		@EventHandler(priority=EventPriority.HIGH)
		public void event(PlayerJoinEvent event){
			Player p = (Player) event;
			Location loc = p.getLocation();
			World w = p.getWorld();
			int x = loc.getBlockX();
			int y = loc.getBlockY();
			int z = loc.getBlockZ();
			if(x < x-2){
				p.teleport(new Location(w, x, y, z));
			
			}
			if(x > x+2){
				p.teleport(new Location(w, x, y, z));
				
			}
			if(z < z-2){
				p.teleport(new Location(w, x, y, z));
			
			}
			if(z > z+2){
				p.teleport(new Location(w, x, y, z));
			
			}
			if(y < y-2){
				p.teleport(new Location(w, x, y, z));
			
			}
			if(y > y+4){
				p.teleport(new Location(w, x, y, z));
			
			}
			}

Zrobiłem coś takiego, w eclipse nie wywala błędów lecz nie działa w praktyce :c oto logi z konsoli:

15:08:34 [INFO] /95.160.0.191:63447 lost connection
15:08:55 [INFO] rafalolxD[/95.160.0.191:63155] logged in with entity id 229203 at ([world] 276.78949499853707, 66.0, 328.8173747796231)
15:08:55 [SEVERE] Could not pass event PlayerJoinEvent to Tutorial v1.0
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
        at net.minecraft.server.v1_6_R3.PlayerList.c(PlayerList.java:207)
        at net.minecraft.server.v1_6_R3.PlayerList.a(PlayerList.java:103)
        at net.minecraft.server.v1_6_R3.PendingConnection.e(PendingConnection.java:132)
        at net.minecraft.server.v1_6_R3.PendingConnection.d(PendingConnection.java:43)
        at net.minecraft.server.v1_6_R3.DedicatedServerConnectionThread.a(DedicatedServerConnectionThread.java:41)
        at net.minecraft.server.v1_6_R3.DedicatedServerConnection.b(SourceFile:29)
        at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:592)
        at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:227)
        at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:488)
        at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:421)
        at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
Caused by: java.lang.ClassCastException: org.bukkit.event.player.PlayerJoinEvent cannot be cast to org.bukkit.entity.Player
        at rafalol.main.event(main.java:51)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
        ... 14 more

Ma ktoś jakieś pomysły :c ?

Opublikowano

Zmieniłem nie pokazuje błędów w konsoli ale nadal nie działa

 

@Edit

 

Ma ktoś jakieś jeszcze pomysły jak to zrobić ?

oto aktualny kod :

		@EventHandler(priority=EventPriority.HIGH)
		public void event(PlayerJoinEvent event){
			Player p = event.getPlayer();;
			Location loc = p.getLocation();
			World w = p.getWorld();
			int x = loc.getBlockX();
			int y = loc.getBlockY();
			int z = loc.getBlockZ();
			if(x < x-2){
				p.teleport(new Location(w, x, y, z));
				
			}
			if(x > x+2){
				p.teleport(new Location(w, x, y, z));
			
			}
			if(z < z-2){
				p.teleport(new Location(w, x, y, z));
				
			}
			if(z > z+2){
				p.teleport(new Location(w, x, y, z));
				
			}
			if(y < y-2){
				p.teleport(new Location(w, x, y, z));
				
			}
			if(y > y+4){
				p.teleport(new Location(w, x, y, z));
			
			}
			}
Opublikowano

Co to ma niby robić? Jak na razie to nie ma zbytnio sensu. Pomyśl.

Najpierw sprawdź czy w miejscach, w których jesteś, są jakieś bloki, jeżeli nie ma, to wstaw w ich miejsce stworzone przez siebie bloki.

Opublikowano

@up słuszna uwaga

----

Pisałem ,że uczę się. trochę inaczej zrozumiałem kod który podał mi Mordjic przez to coś mi się pojebało.

 

@peras povskill

Bardzo się cieszę ,że was rozbawiłem ale miło by było jakby wasza odpowiedź zawierała cokolwiek oprócz krytyki i głupich gifów, jakiejś pomocy w rozwiązaniu mojego problemu czy podania innej metody aby zablokować gracza.

 

@Edit

Dla tych co kiedyś odgrzebią ten temat i będą mieli ten sam problem:

	    @EventHandler
	    public void onMove(PlayerMoveEvent e){
	    	Player p = e.getPlayer();
	    	Location f = e.getFrom();
	    	Location t = e.getTo();
	    	 
	    	if(f.getX() != t.getX() || f.getY() != t.getY() || f.getZ() != t.getZ()){
	    	p.teleport(f);
	    	}

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...