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] Eventy w innych package'ach


Rekomendowane odpowiedzi

Opublikowano

Bukkit.getPluginManager().registerEvents(new NazwaKlasy(), this);

Niestety, ale nie działa ;/

 

Próbowałem też Bukkit.getPluginManager().registerEvents(this.god(), this); ale również nie działa.

Opublikowano

Tak jak @KAM202 napisał jest dobrze - musisz tylko zaimportować tę klasę.

Jeśli korzystasz z Eclipse to wciśnij CTRL+SHIFT+O

 

Niby jest dobrze, a jest źle (mimo, iż mam zaimportowaną klasę)...

 

http://zapodaj.net/d568459fdbfd4.png.html

 

 

Dodałeś EventHandler'a?

 

Tak.

 

 

 

@Diverse.

a co to k***a ma do rzeczy w packagach? 

robisz tak

this.getServer().getPluginManager().registerEvents(new NazwaListenera(), this);
                                                       // TO IMPORTUJESZ JAK MASZ ECLIPSE TO KLIKASZ JAK NETBEANS TO PISZESZ (NAZWAPACKAGE.NazwaListenera np me.confuser.barapi.ApiListner);

 

Tak samo jak u @shooly

Opublikowano

WTF?

Po co robić osobny package do każdej klasy pluginu?

Zrób w jednym package, przecież każdy kolejny nic nie wnosi..

 

Jak zrobisz w jednym to:

 

W głównej klasie (Main):

 

    public static void registerEvents(org.bukkit.plugin.Plugin plugin, Listener... listeners) {
    for (Listener listener : listeners) {
    Bukkit.getServer().getPluginManager().registerEvents(listener, plugin);
    }
    }
 
następnie w onEnable głównej klasy:
 
registerEvents(this, new nazwa());

Nie zapomnij że każda nowa klasa musi mieć:

public class <nazwa> implements Listener

b_560_95_2.png

Opublikowano

@TheDayderPL a jaki masz dokładniej błąd? W klasie cmd masz zaimplementowanego Listenera? masz coś w tym stylu?:227701409950190282917.png chodzi mi o te implements Listener w klasie oczywiście cmdGod??

Moje Pluginy!

1.Cobble Drop

Jak Możesz To Daj Lajka,Życie To Nie Bajka :D

Ciekawostka Minecraft możesz mieć max 32767 Lvl ponieważ przy 32768 Lvl znika ci napis z twoim aktualnym LVL`em

Potrzebujesz jakiegoś spigota,craftbukkita lecz nie możesz go znaleźć(DMCA)? Wejdź Tutaj!!

Opublikowano

@TheDayderPL a jaki masz dokładniej błąd? W klasie cmd masz zaimplementowanego Listenera? masz coś w tym stylu?:227701409950190282917.png chodzi mi o te implements Listener w klasie oczywiście cmdGod??

Błędów żadnych, tylko event nie działa. Resztę mam zrobioną jak mówisz ;)
Opublikowano

@TheDayderPL daj mi na pastbin kod z tych 2 klas możesz na pw lub tu. Zobaczę co masz źle :|

Moje Pluginy!

1.Cobble Drop

Jak Możesz To Daj Lajka,Życie To Nie Bajka :D

Ciekawostka Minecraft możesz mieć max 32767 Lvl ponieważ przy 32768 Lvl znika ci napis z twoim aktualnym LVL`em

Potrzebujesz jakiegoś spigota,craftbukkita lecz nie możesz go znaleźć(DMCA)? Wejdź Tutaj!!

Opublikowano

//Edit (była mowa, że EventHandler został dodany)

Konsola niczego nie wysypuje?

Jeśli mi odpowiadasz, zacytuj mój post - lub otaguj przy użyciu @Quasindro.
Jak tego nie zrobisz, najprawdopodobniej nie wrócę do tego tematu.


uExDb2M.jpg

'I have often wished I had time to cultivate modesty... But I am too busy thinking about myself.' ~Edith Sitwell.

Opublikowano

Na samym początku w oddzielnych paczkach piszesz

public class <nazwa klasy> implements Listener

Później przed każdym eventem piszesz

@EventHandler

Następnie piszesz

public void <nazwa>(<nazwaeventu> <skrót eventu, np. "e">){
// tutaj piszesz co chcesz by się wykonało
}

W głównej klasie piszesz

public final <nazwa clasy z eventem> <swoja nazwa> = new <nazwa clasy z eventem>(this);

Potem w onEnable

Bukkit.getServer().getPluginManager().registerEvents(this.<swoja nazwa>, this);

I to tyle.

 

A co do @upall 

Jak się nie znacie na pisaniu pluginów to się nie wypowiadajcie bo tylko nabijacie posty, a i tak "gówno" pomogacie.

 

Tyle z mojej strony. Liczę, że pomogłem :)

|| 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 | 450 | 500 ||


 

Opublikowano

Na samym początku w oddzielnych paczkach piszesz

public class <nazwa klasy> implements Listener

Później przed każdym eventem piszesz

@EventHandler

Następnie piszesz

public void <nazwa>(<nazwaeventu> <skrót eventu, np. "e">){
// tutaj piszesz co chcesz by się wykonało
}

W głównej klasie piszesz

public final <nazwa clasy z eventem> <swoja nazwa> = new <nazwa clasy z eventem>(this);

Potem w onEnable

Bukkit.getServer().getPluginManager().registerEvents(this.<swoja nazwa>, this);

I to tyle.

 

A co do @upall 

Jak się nie znacie na pisaniu pluginów to się nie wypowiadajcie bo tylko nabijacie posty, a i tak "gówno" pomogacie.

 

Tyle z mojej strony. Liczę, że pomogłem :)

HAHAHA po pierwsze na co:"public final <nazwa clasy z eventem> <swoja nazwa> = new <nazwa clasy z eventem>(this);"? po co tworzyć zmienną? jak można odrazu dać namiar na klasę? Od zawsze tak robiłem i tak dalej robię : 

w public onEnable daje

 

Bukkit.getPluginManager().registerEvents(new R(), this); tam gdzie R to nazwa klasy

a klasa R wygląda tak:

package mrzenek.test;

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;

public class R implements Listener{
	
	@EventHandler
	public void onPlayerJoin(PlayerJoinEvent event){
		event.getPlayer().sendMessage("Hejo!");
	}

}

i działa nie potrzebuje nic więcej :| PROSTE!!!

 

@down spoko tylko chcę podkreślić że to co pokazałem jest prostsze szybsze wygodniejsze i nie trzeba tworzyć zbędnego kodu. Bo z klasy z listnerem wątpię że będziesz korzystał jeszcze raz w głównej klasie. Ta zmienna którą dałeś jest tak zwanym kodem śmieciowym i równie dobrze mogło by jej nie być ale jak ci jest tak wygodniej to spoko pisz sobie :) Ja ci tylko mówię że można zrobić to troszku lepiej zaoszczędzając 1 linijkę kodu xD

Moje Pluginy!

1.Cobble Drop

Jak Możesz To Daj Lajka,Życie To Nie Bajka :D

Ciekawostka Minecraft możesz mieć max 32767 Lvl ponieważ przy 32768 Lvl znika ci napis z twoim aktualnym LVL`em

Potrzebujesz jakiegoś spigota,craftbukkita lecz nie możesz go znaleźć(DMCA)? Wejdź Tutaj!!

Opublikowano

Spróbuj tego "Bukkit.getPluginManager().RegisterEvents(new Cmdgod(this), this);" Sory za błędy ale pisze z fona

 

Moje Pluginy!

1.Cobble Drop

Jak Możesz To Daj Lajka,Życie To Nie Bajka :D

Ciekawostka Minecraft możesz mieć max 32767 Lvl ponieważ przy 32768 Lvl znika ci napis z twoim aktualnym LVL`em

Potrzebujesz jakiegoś spigota,craftbukkita lecz nie możesz go znaleźć(DMCA)? Wejdź Tutaj!!

Opublikowano

Dodaj sobie  na początku kodu:

NazwaKlasy nazwaKlasy;

w onEnable:

 

this.nazwaKlasy = NazwaKlasy;
Bukkit.getPluginManager().registerEvents(nazwaKlasy, this);

Pisze pluginy na zamówienie ! Skype: elfusion200

Opublikowano

2 klasy = 2 różne arraylisty ...

CmdGod god = new CmdGod(this):
getCommand("god").setExecutor(god);
pluginman.registerEvents(god, this);

Przetestowane - działa.

 

(pominę już fakt, że robić tak to totalna głupota i debilizm)

 

btw. użyj /god z konsoli i zobacz co się stanie ;)

btw2.

if(!p.hasPermission("tools.god") || !p.hasPermission("tools.*")){

To nie zadziała tak jak myślisz że zadziała.

Opublikowano

2 klasy = 2 różne arraylisty ...

CmdGod god = new CmdGod(this):
getCommand("god").setExecutor(god);
pluginman.registerEvents(god, this);

Przetestowane - działa.

 

(pominę już fakt, że robić tak to totalna głupota i debilizm)

 

btw. użyj /god z konsoli i zobacz co się stanie ;)

btw2.

if(!p.hasPermission("tools.god") || !p.hasPermission("tools.*")){

To nie zadziała tak jak myślisz że zadziała.

 

Lel, działa :P

Bardzo dziękuję :)

 

Co do btw1. - wiem co się stanie, wiem też jak to poprawić, więc się nie martw - poradzę sobie (raczej :D)

 

Co do btw2. - zadziała, testowałem

 

Temat raczej można zamknąć - dziękuję wszystkim za pomoc :)

Opublikowano

Lel, działa :P

Bardzo dziękuję :)

 

Co do btw1. - wiem co się stanie, wiem też jak to poprawić, więc się nie martw - poradzę sobie (raczej :D)

 

Co do btw2. - zadziała, testowałem

 

Temat raczej można zamknąć - dziękuję wszystkim za pomoc :)

EEee znalazłem jeden mały błąd dlaczego ci wcześniej nie działało :

public ArrayList<String> godPlayers = new ArrayList<String>();

tam powinno być public static !! 

 

a i do komend musisz dodać return`y bo inaczej nie będzie działać jak chcesz :

@Override
	public boolean onCommand(CommandSender sender, Command cmd, String l, String[] args) {
		Player p = (Player) sender;
		if(l.equalsIgnoreCase("god")){
			if(sender instanceof Player){
				if(!p.hasPermission("tools.god") || !p.hasPermission("tools.*")){
					p.sendMessage(ChatColor.DARK_RED + "» " + ChatColor.RED + "Nie posiadasz uprawnien do tej komendy.");
					return true;
				}
				if(args.length == 0){
					if(godPlayers.contains(p.getName())){
						godPlayers.remove(p.getName());
						p.sendMessage(ChatColor.DARK_AQUA + "» " + ChatColor.GREEN + "God zostal " + ChatColor.DARK_AQUA + "wylaczony" + ChatColor.GREEN + " dla gracza " + ChatColor.DARK_AQUA + p.getName());
						return true;
					}else{
						godPlayers.add(p.getName());
						p.sendMessage(ChatColor.DARK_AQUA + "» " + ChatColor.GREEN + "God zostal " + ChatColor.DARK_AQUA + "wlaczony" + ChatColor.GREEN + " dla gracza " + ChatColor.DARK_AQUA + p.getName());
						return true;
					}
				}
			}
		}
		return false;
	}

:)

Moje Pluginy!

1.Cobble Drop

Jak Możesz To Daj Lajka,Życie To Nie Bajka :D

Ciekawostka Minecraft możesz mieć max 32767 Lvl ponieważ przy 32768 Lvl znika ci napis z twoim aktualnym LVL`em

Potrzebujesz jakiegoś spigota,craftbukkita lecz nie możesz go znaleźć(DMCA)? Wejdź Tutaj!!

Opublikowano

@shooly sprawdzałem i działa bo dając static udostępniasz to całej klasie a public całej reszcie jak chcesz by to było udostępnione tylko w jednej klasie to dajesz private static.. i już :|

z resztą zrób nowy czysty plugin daj do niego w jednej klasie to :
 

http://wklej.to/Qp6t9

a w głównej w onEnable wpisz to:
 

Bukkit.getPluginManager().registerEvents(new <nazwa twojej klasy>(this), this);
getCommand("god").setExecutor(new <nazwa twojej klasy>(this));

i sprawdź czy działa. U mnie działa po dodaniu static jak usuniesz static to nie będzie działać sprawdź sam

taki mały cytat z pewnej strony o javie : 

Modyfikator „static” używany jest, aby stworzyć zmienne, czy metody, dostępne dla każdej instancji klasy. Taka zmienna lub metoda istnieje zawsze, nawet gdy nie nie została utworzona żadna instancja klasy.

instancje to void`y jak by ktoś nie wiedział :|

Moje Pluginy!

1.Cobble Drop

Jak Możesz To Daj Lajka,Życie To Nie Bajka :D

Ciekawostka Minecraft możesz mieć max 32767 Lvl ponieważ przy 32768 Lvl znika ci napis z twoim aktualnym LVL`em

Potrzebujesz jakiegoś spigota,craftbukkita lecz nie możesz go znaleźć(DMCA)? Wejdź Tutaj!!

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...