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] Trochę pytań jak coś napisać w pluginie


Rekomendowane odpowiedzi

Opublikowano

Witam.

 

Pisze pluginy i nie wiem jak zrobić kilka rzeczy:

 

01. Jak się robi listenera i jakie są wszystkie listenery (potrzebna mi jest ich lista)?

 

02. Jak napisać takie coś, że po umieszczeniu tabliczki ma ją przeanalizować i w pewnym wypadku (gdy spełniony IF) ma ją zmienić (wszystkie jej linijki)?

Ważne jest, żeby móc odczytać kto ją umieścił, a także jej koordynaty,

 

03. Jak zrobić, żeby dana procedura wywołała się po kliknięciu tabliczki (z możliwością odczytania jej koordynatów oraz osoby klikającej, a także tego co miała w ręce w momencie kliknięcia)?

 

04. Jak się robi GUI (takie jak skrzynia z itemami, różnymi, z różnymi nazwami i opisami) oraz jak zrobić, że po kliknięciu jakiejś rzeczy GUI się zamyka i jest wykonywana inna procedura, która też otworzy GUI, ale z innymi itemiami i o innej wielkości?

 

 

 

Z góry dziękuję za pomoc

DEVWEBTEL

 

"Los nagradza przygotowanych"

 

(Liberator 2)

  • Odpowiedzi 142
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

Witam.

 

Pisze pluginy i nie wiem jak zrobić kilka rzeczy:

 

01. Jak się robi listenera i jakie są wszystkie listenery (potrzebna mi jest ich lista)?

 

02. Jak napisać takie coś, że po umieszczeniu tabliczki ma ją przeanalizować i w pewnym wypadku (gdy spełniony IF) ma ją zmienić (wszystkie jej linijki)?

Ważne jest, żeby móc odczytać kto ją umieścił, a także jej koordynaty,

 

03. Jak zrobić, żeby dana procedura wywołała się po kliknięciu tabliczki (z możliwością odczytania jej koordynatów oraz osoby klikającej, a także tego co miała w ręce w momencie kliknięcia)?

 

04. Jak się robi GUI (takie jak skrzynia z itemami, różnymi, z różnymi nazwami i opisami) oraz jak zrobić, że po kliknięciu jakiejś rzeczy GUI się zamyka i jest wykonywana inna procedura, która też otworzy GUI, ale z innymi itemiami i o innej wielkości?

 

 

 

Z góry dziękuję za pomoc

DEVWEBTEL

1 nazwa klasy implements Listener i pozniej eventhandler 

http://jd.bukkit.org/rb/doxygen/d1/d22/classorg_1_1bukkit_1_1event_1_1Event.html

2 sign change event

3 playerinteract event

4 tworzysz jakies tam wirtualne eq 

Opublikowano

Zacznijmy od tego, że nie ma czegoś takiego jak lista 'Listenerów' - jest lista eventów.

Znaleźć ją można na Githubie Bukkita lub jd.bukkit.org

public class NazwaKlasy implements Listener {
@EventHandler
public void foo(Event event){
 
}
}

2. Wykorzystaj event SignChangeEvent.

3. PlayerInteractEvent.

4. Bukkit.createInventory()

Opublikowano

A jak w punkcie 2. zmienić zawartość tej tabliczki?

 

I czy da ktoś przykład dla punktu 4. np. menu z 2 rzędami, i kilka itemów tam umieściić (z różnymi nazwami i opisami - też kolorowymi)?

 

 

Wszyscy co mi pomogli dostają like.

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

Dzięki.

 

A pomożecie z tym GUI?

 

Napiszcie przykład, że po wpisaniu polecenia /test otwiera się okno z dwoma wełnami - zieloną (nazwa TAK), czerwoną (nazwa NIE).

 

I po kliknięciu którejść z nich na czacie: wybrano (i tutaj kolor wełny).

 

 

Mógłby ktoś coś takiego napisać i wrzucić kod.

 

Mi jest tak najłatwiej zrozumieć :)

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

Stary, ty nie umiesz pisać pluginów. Po co robisz taki temat, jeśli tak na prawdę podstaw nie znasz..?
Rusz szanowne 4 literki, i do lekturek zapraszam, a nie prosisz o gotowy kod...
 

https://www.youtube.com/channel/UCOBqSqnLO7Z42Y8JwgfhpRQ
https://www.youtube.com/channel/UCI5kTq_eoaZslY9TQ4XlmmA
https://github.com/BukkitSmerf/BukkitTutorial-PL/wiki
javastart.pl/

733761405517115815990.png

"To, że milczę, nie znaczy, że nie mam nic do powiedzenia" ~Jonathan Carroll

Opublikowano

Uczę się tego co mi potrzebne, a nie wszystkiego.

 

A najlepiej to się uczę z przykładów, analizując je.

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

W takim razie na górze masz kanały YT, tam powinieneś znaleźć coś dla siebie :)
Min. jest i o oknach eq
Gdybyś RZECZYWIŚCIE miał jakiś problem po tym, to napisz. Wtedy można powiedzieć że próbujesz ale potrzebujesz pomocy ;)
Dał bym ci nawet ten kod... Jednak uwierz mi, że lepiej poczytać o tym wszystkim. Wtedy będziesz mógł wszystko analizować i się uczyć na bieżąco używając przykładów, czy czytając coraz bardziej zaawansowane poradniki czy książki.
 

733761405517115815990.png

"To, że milczę, nie znaczy, że nie mam nic do powiedzenia" ~Jonathan Carroll

Opublikowano

Przez wszystkie lata, gdy programuję uczyłem się z przykładów, ale skoro tak mówisz to sprubuję.

 

Przejrzałem szybko te linki (nie miałem czasu jeszcze) i widzę, że jest tam dużo filmików.

Tylko przy tym ostatnim wywala błąd 404 - strona nieodnaleziona.

 

Tematu nie zamykajcie (to do moderatorów, kidmodów, liderów, adminów i innych zamykaczy), gdyż napewno się jeszcze przyda i to w najbliższej przyszłości.

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

Cóż, czasem trudno coś zrozumieć gdy nie zna się kodu :)
Jeśli będziesz wiedział niektóre rzeczy, patrząc na inny kod lub na przykłady etc. będziesz mógł sobie rozmyślić na jakiej zasadzie on działa. Będzie ci o wiele łatwiej
jeśli

javastart.pl/

ci nie działa, może chwilowa awaria. Mi aktualnie działa
Jak będziesz miał problem, szukaj również pod hasłami po prostu związanymi z samą javą, czy szukaj pomocy na forach o javie / w dziale java na MPC
Pamiętajmy, że pluginy piszemy w Javie, a nie w "bukkitowym języku :D "

Jak coś znajdę jeszcze, podeślę ci ew. na PW // edytuje tamten post

733761405517115815990.png

"To, że milczę, nie znaczy, że nie mam nic do powiedzenia" ~Jonathan Carroll

Opublikowano

Wiem, że piszemy w javie.

 

Cały dzień "zabawy" z eventami i listenerami się opłacił :).

 

Tylko szkoda, że nie me eventu gdy commandblock wywoła jakąś komędę.

 

Da się to zrobić, żeby po wywołaniu dowolnej komendy commandblockiem wywołała się procedura (która może przerwać to), event dla komendy gracza i event dla komendy serwera nie działa.

 

 

W krótce poćwiczę GUI (na "zabawę" mam czas tylko w weekendy - w inne dni piszę tylko to co umiem).

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

Ową klasę tworzysz tak
public class nazwa implements Listener{

@EventHandler

public void cos(NAZWA skrot){
czyli np PlayerMoveEvent e :x

 

W onEnable dodajesz takie coś getServer().getPluginManager().registerEvents(new NazwaKlasy(), this);

Opublikowano

Ową klasę tworzysz tak

public class nazwa implements Listener{

 

@EventHandler

public void cos(NAZWA skrot){

czyli np PlayerMoveEvent e :x

 

W onEnable dodajesz takie coś getServer().getPluginManager().registerEvents(new NazwaKlasy(), this);

 

Na to pytanie już dawno została udzielona odpowiedź.

 

Pytałem się o to jak zrobić, gdy commandblock wywoła komende, gdyż nie ma takiego eventu.

 

Pytam się też jak używać eventu, gdy gracz napisze coś na chacie, gdyż nie chce mi on działać (eclipse skreśla nazwę eventu).

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

Na to pytanie już dawno została udzielona odpowiedź.

 

Pytałem się o to jak zrobić, gdy commandblock wywoła komende, gdyż nie ma takiego eventu.

 

Pytam się też jak używać eventu, gdy gracz napisze coś na chacie, gdyż nie chce mi on działać (eclipse skreśla nazwę eventu).

1. Sprobuj ServerCommandEvent

 

2. PlayerChatEvent jest deprecated. Uzyj AsyncPlayerChatEvent.

Dlaczego MPC popiera piractwo Minecrafta...

 

Do moderatora: Po co Ty to usuwasz??

Opublikowano

1. Sprobuj ServerCommandEvent

 

2. PlayerChatEvent jest deprecated. Uzyj AsyncPlayerChatEvent.

 

ServerCommandEvent nie działa do commandblocka. Sprawdziłęm to za nim napisałem posta, że mam z tym kopot.

 

Co do tego drugiego to dzięki - sróbuję to zrobić w najbliższej przyszłości.

 

 

A jak zrobić, żeby dana procedura wykonywała się co jakiś czas, np. co sekunde?

 

 

(Sory, że tyle pytam, ale łatwiej jest trochę zapytać niż przeszukiwać google i poradniki, ale to też lepiej dla was, ponieważ za każdą dobrą odpowiedź daję like :)).

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

Listę wydarzeń oraz opis każdego z nich znajdziesz na

http://jd.bukkit.org/

Tymczasowo strona nie działa, jednak niedługo błąd powinien być naprawiony.

@Edit up musisz użyć odpowiednio loop'a i timer'a

 

Timer:

this.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {

public void run() {
//* twój kod *//
}
}, 20L);

Gdzie 20L to 1sekunda
40L to 2 sekundy, etc...

 

Loop:
Dokładnie masz to opisane tutaj

https://github.com/BukkitSmerf/BukkitTutorial-PL/wiki/Java-P%C4%99tle

Widać że nie czytasz dokładnie :|

Przykładowy loop:

	                
	                  				for (int i = 0; i < 101; i++) {
	                  					//* kod *//
	                  				}

gdzie zmienna typu integer o nazwie i = 0
każdy loop dodaje do tej zmiennej 1
Jeśli wykona się odpowiednio tyle razy, zmienna " i " będzie większa od 101, loop się zatrzyma.

takie informacje ci wystarczą. Jeśli chcesz się czegoś nauczyć, pogłówkuj :)

733761405517115815990.png

"To, że milczę, nie znaczy, że nie mam nic do powiedzenia" ~Jonathan Carroll

Opublikowano

Listę wydarzeń oraz opis każdego z nich znajdziesz na

http://jd.bukkit.org/

Tymczasowo strona nie działa, jednak niedługo błąd powinien być naprawiony.

 

@Edit up musisz użyć odpowiednio loop'a i timer'a

 

 

Timer:

this.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {

public void run() {
//* twój kod *//
}
}, 20L);

Gdzie 20L to 1sekunda

40L to 2 sekundy, etc...

 

Loop:

Dokładnie masz to opisane tutaj

https://github.com/BukkitSmerf/BukkitTutorial-PL/wiki/Java-P%C4%99tle

Widać że nie czytasz dokładnie :|

Przykładowy loop:

	                
	                  				for (int i = 0; i < 101; i++) {
	                  					//* kod *//
	                  				}

gdzie zmienna typu integer o nazwie i = 0

każdy loop dodaje do tej zmiennej 1

Jeśli wykona się odpowiednio tyle razy, zmienna " i " będzie większa od 101, loop się zatrzyma.

 

takie informacje ci wystarczą. Jeśli chcesz się czegoś nauczyć, pogłówkuj :)

 

Pętlę for to dobrze znałem i często jej używam :).

 

 

Za tego timera dzięki - w oficjalnym poradniku bukkita nie było to opisane (tylko wspomnieli, że takie coś istnieje) i nie mogłem tego znaleźć w internecie.

Jeżeli dobrze się oriętuje to czas timera to ticki (pamiętam że 1 tick = 0.05 sekundy, 1 sekunda = 20 ticków), tak?

 

 

A co do eventu commandblocka to odgrzebałem jakiś czas temu tegoroczną dyskusję na forum bukkita o tym, gdzie administrator odpowiedział, że taki event nie istnieje i stąd moje pytanie.

 

Dzięki za pomoc i liczę na wskazówki z tym commandblockiem...

 

 

PS: Kasuję chwilowo twojego naj, żeby zniknął znacznik Rozwiązany przy temacie na liście tematów w dziale.

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

@Autor

Tu się nauczysz pisać pluginy, w każdym razie dużo się z tego o "pluginowaniu" nauczysz:

http://www.mpcforum.pl/topic/1016491-od-zera-do-bukkits-plug-in-developera/#entry8425251

PS: Jeżeli chciałbyś mi pomóc w serwerze, to zapraszam :D

Jeżeli masz 16+ lat to chętnie Cię przyjmę <3

A jeżeli czegoś nie będziesz wiedzieć, to możesz mnie spytać (Chociaż ja też się uczę:D)

Cześć!

Jeżeli odpowiedziałem akurat w tym temacie, którym się interesujesz lub sam go założyłeś to wiedz, że dopóki nie rozwiążemy problemu, zagwozdki, czy po prostu nie rozwiejemy Twoich wątpliwości będę śledzić ten temat.

 

Nie rzucam słów na wiatr, więc i ty też tego nie rób.

 

Pozdrawiam,

S0L1D3R

Opublikowano

Prawdę mówiąc zerknąłem tylko okiem, ale kod wygląda na sensowny.
Niestety, nie sprawdzałem ze względu braku wolnego czasu.
Sprawdź czy działa, kod nie wydaje się trudny więc powinieneś go zrozumieć:
 

https://forums.bukkit.org/threads/command-block-restriction-edit.182295/#post-1903083
https://forums.bukkit.org/threads/enter-text-in-command-block-event.262932/

Jeśli nie mogę podać powyższych linków ze względu na regulamin, przepraszam i proszę o usunięcie.

 

Jeżeli dobrze się oriętuje to czas timera to ticki (pamiętam że 1 tick = 0.05 sekundy, 1 sekunda = 20 ticków), tak?

ofc. :)

733761405517115815990.png

"To, że milczę, nie znaczy, że nie mam nic do powiedzenia" ~Jonathan Carroll

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...