Skocz do zawartości

Rekomendowane odpowiedzi

Witam!

Chciałbym przedstawić własny plugin na otchłań testowany na wersji 1.12.2.

Nie ukrywam, że plugin ten nie należy do największych projektów oraz jego kod może nie być idealny, lecz będzie on rozwijany i udoskonalany (gdyż jest to wersja v1.0).

Moim celem był akurat ten plugin, gdyż nie zauważyłem nigdzie aktualnej wersji tej pluginu (co nie oznacza że go nie ma).

 

Działanie:

Co określony czas wszystkie przedmioty z ziemi z określonych światów zostają przeniesione do tzw. otchłani, a dany czas przed tym wydarzeniem jest komunikat o tym, że otchłań zostanie otwarta za dany czas. Gdy otworzymy otchłań (komendy znajdują się poniżej) wyświetla nam się GUI z listą przedmiotów, które się tam znajdują. Lista jest automatycznie odświeżana dla wszystkich graczy z otwartym GUI zarówno podczas wyjęcia itemku z GUI, jak i przy przeniesieniu nowych. Plugin posiada także funkcję blokady otchłani, która polega na tym, że dany czas po przeniesieniu przedmiotów otchłań zostaje automatycznie zamknięta oraz przedmioty zostają usunięte. Jako admin jesteśmy także w stanie przeładować timer i config.

 

Komendy:

/ot  lub /otchlan - otwiera otchłań na pierwszej stronie

/ot <nr strony> - otwiera otchłań na danej stronie (która automatycznie się zmniejsza jeżeli jest większa od całkowitej liczby stron)

/otadmin reload config lub /otchlanadmin reload config - przeładowuje config

/otadmin reload timer - restartuje timer otchłani

 

Permisje:

otchlan.gracz.otworz - permisja do otworzenia pierwszej strony otchłani

otchlan.gracz.numer - permisja do otworzenia dowolnej strony otchłani

otchlan.admin - permisja do przeładowania configu i timera (razem)

otchlan.admin.config - permisja do przeładowania configu

otchlan.admin.timer - permisja do przeładowania timera

 

Config:

Wszystkie ustawienia są szczegółowo opisane w komentarzach configu, którego domyślna wersja wygląda tak:

Spoiler

#Made by LessNop 21.10.2018
#Open Source

settings:
  
  #Nazwa GUI, ktore pojawia sie po uzyciu /otchlan - uzyj %strona% aby wyswietlic strone gui ktora jest wyswietlana
  # %strona% MUSI BYC NA KONCU NAZWY EKWIPUNKU I PRZED NIA MUSI BYC SPACJA BO INACZEJ PLUGIN NIE ZADZIALA!
  nazwaEkwipunku: Otchlan - strona %strona%
  
  #Czy itemy maja pozostac w otchlani po restarcie serwera (true/false)
  zapisItemow: true
  
  #Wszystkie czasy mozna podac w: godzinach - 'h' , minutach - 'min', sekundach - 'sek' albo tickach (1/20 sek) - bez jednostki
  
  #Czas co jaki itemy maja byc przeniesione do otchlani
  czasOgolny: 10min
  
  #Czas, przed przeniesioniem itemow do otchlani, powiadomienia
  czasWiadomosci: 1min
  
  #Czas po którym otchlan zostaje zamknięta i wyczyszczona - ustaw '-1' aby byla caly czas otwarta
  czasOtwarcia: '-1'
  
  #Swiaty z ktorych maja znikac itemy
  swiaty:
  - world
  - world_nether
  - world_the_end
  
wiadomosci:
  
  #Nazwa przed wiadomoscia - kolory dzialaja poprzez &NUMER (takze w wiadomosciach)
  prefix: '/&7[/&bOtchlan/&7] '
  
  #Wiadomosc o zamknieciu otchlani
  1: /&cOtchlan zostala zamknieta!
  
  #Wiadomosc o otwarciu otchlani - uzyj %czaspo% aby wyswietlic czas do zamkniecia otchlani
  2: /&aOtchlan zostala otwarta!
  
  #Wiadomosc przed otwarciem otchlani - uzyj %czas% aby wyswietlic czas do otwarcia otchlani (automatycznie przeksztalcany do sekund/minut/godzin
  3: /&aPrzedmioty z ziemi zostana przeniosione do otchlani za %czas%!
  
  #Wiadomosc o zamknietej otchlani (opcjonalna)
  4: /&cOtchlan jest teraz zamknieta!

Link do githuba (znajduje się tam zarówno plugin - w folderze "Jars" jak i kod źródłowy - w folderze "src") :

 

https://github.com/LessNop/Otchlan

 

 

Mam nadzieję, że szczegółowo opisałem cały plugin i za wszelkie błędy, które się pojawiły w tym temacie, jak i ewentualne bugi pluginu z góry przepraszam

Dziękuję za uwagę i życzę miłego użytkowania :)

 

//UPDATE v1.1.0

 

Zmiany:

  • Zewnętrzne:
  1. Poprawa błędu o nieprawidłowym czasie do zamknięcia otchłani
  2. Poprawa błędu o nieprawidłowej permisji dla gracza
  3. Naprawa omyłkowo dodanego eventu, który powodował błędy
  • Wewnętrzne:
  1. Zmiana nazw wszystkich zmiennych i klas na angielskie
  2. "Posegregowanie" klas do odpowiednich package'ów
  3. Usunięcie nadmiaru używania statycznych zmiennych

 

//UPDATE v1.2.0

 

Zmiany:

  • Zewnętrzne:
  1. Poprawa błędu przy wyjęciu ostatniego przedmiotu
  2. Poprawa configu (minimalne błędy składniowe)
  • Wewnętrzne:
  1. Usunięcie wszystkich statycznych zmiennych i funkcji
  2. zwiększenie wydajności refreshu okna

 

//UPDATE v1.2.1

 

Zmiany:

  • Wewnętrzne:
  1. "Poukładanie" klas
  2. Przeniesienie komend do nowych klas
  3. Próba edycji kodu na czytelniejszy
Edytowane przez Kris2oo1
Odnośnik do komentarza
https://skript.pl/temat/30043-otch%C5%82a%C5%84-v121/
Udostępnij na innych stronach

Jeżeli dajesz jarke to nie dajesz jej do src tylko do relase :v

Używa się package'ow a nie wszystko w 1 :V 

Nazwy klas, metod itd. powinno nazywać się po angielsku :V Wiem że niektóre są po angielsku ale nie wszystkie :V

Nie używa się § tylko np. ChatColor.BLUE ;--;

Gdybym chciał mógł bym to potraktować trochę jak backdoor:

@EventHandler
public void onBreak(PlayerItemDamageEvent e) {
	e.setCancelled(true);
}

Na forum mamy inny według mnie lepszy plugin na otchłań

Edytowane przez McKoxu
Odnośnik do komentarza
https://skript.pl/temat/30043-otch%C5%82a%C5%84-v121/#findComment-197086
Udostępnij na innych stronach

Wydaje mi sie ze kod to jedna wielka sklejka

Czemu ? 

Raz piszesz klasy po angielsku, raz po polsku

public class PlayerJoin implements Listener{
	
	@EventHandler
	public void onBreak(PlayerItemDamageEvent e) {
		e.setCancelled(true);
	}
	
}

Nie rozumiem tego

 

2. Nie robisz package, wszystko w jednym, dlatego czytanie kodu jest okropne

 

A pozatym moze byc

5/10

Odnośnik do komentarza
https://skript.pl/temat/30043-otch%C5%82a%C5%84-v121/#findComment-197087
Udostępnij na innych stronach

Nazwy po prostu daje takie jak mi pasuje, juz wiem, że powinno się nazywać po angielsku i od następnego razu już tak będę robił.

@McKoxu Czemu nie używać & ? Jest to czytelniejsze, bo zajmuje mniej miejsca (przynajmniej według mnie) i szybciej się to pisze w ten sposób
Dzięki za odpowiedzi i następnym razem postaram się klasy "posegregować" :)

Odnośnik do komentarza
https://skript.pl/temat/30043-otch%C5%82a%C5%84-v121/#findComment-197093
Udostępnij na innych stronach

Wszystko do zmiany, za dużo pisania

w skrócie nie polecam na żaden serwer =/

Edytowane przez BrixNW
Dodałem znaki diakrytyczne.
Nieaktywny

Dodałem znaki diakrytyczne. 

Odnośnik do komentarza
https://skript.pl/temat/30043-otch%C5%82a%C5%84-v121/#findComment-197106
Udostępnij na innych stronach

11 godzin temu, Kris2oo1 napisał:

@yooniks może byś jednak opisał co jest do zmiany, zamiast nabijać posty?

Nie trzeba tego, co wskazywali poprzedni uczestnicy rozmowy, ale co innego jest wg Ciebie źle wykonane?

Ogólnie bardzo dużo rzeczy, mimo że uzyskałeś efekt końcowy taki jaki chciałeś, to jest to zrobione w sposób niechlujny i wszelkie zasady dobrego kodu zostały niestety złamane i osoba, która nie pisała tego pluginu od początku się nie połapie w nim przez bardzo chaotyczną strukturę pluginu. 

Przykładowo:

  - ta metoda niepotrzebnie jest statyczna:

private static void help(CommandSender c) {
	c.sendMessage("§6/otAdmin reload config §7- przeladowuje config");
	c.sendMessage("§6/otAdmin reload timer §7- resetuje zegar");
}

gdyż wykonujesz ją wewnątrz klasy i metody niestatycznej, przez co nie możesz użyć 'this.help', co bardzo uczytelniłoby kod. 

  - komenda nie powinna znajdować się w głównej klasie pluginu, a właściwie w niej powinno być najmniej jak tylko można kodu.

 

Ogólnie to 5/10 się należy za poświęcony czas i za własne inventory, a nie skrzynka jak to zazwyczaj jest robione, trochę popracuj nad kodem, poczytaj o zasadach dobrego kodu, zastosuj się do nich i będzie okej :)

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
https://skript.pl/temat/30043-otch%C5%82a%C5%84-v121/#findComment-197199
Udostępnij na innych stronach

13 godzin temu, KrejzolekPRO napisał:

Ogólnie bardzo dużo rzeczy, mimo że uzyskałeś efekt końcowy taki jaki chciałeś, to jest to zrobione w sposób niechlujny i wszelkie zasady dobrego kodu zostały niestety złamane i osoba, która nie pisała tego pluginu od początku się nie połapie w nim przez bardzo chaotyczną strukturę pluginu. 

Przykładowo:

  - ta metoda niepotrzebnie jest statyczna:


private static void help(CommandSender c) {
	c.sendMessage("§6/otAdmin reload config §7- przeladowuje config");
	c.sendMessage("§6/otAdmin reload timer §7- resetuje zegar");
}

gdyż wykonujesz ją wewnątrz klasy i metody niestatycznej, przez co nie możesz użyć 'this.help', co bardzo uczytelniłoby kod. 

  - komenda nie powinna znajdować się w głównej klasie pluginu, a właściwie w niej powinno być najmniej jak tylko można kodu.

 

Ogólnie to 5/10 się należy za poświęcony czas i za własne inventory, a nie skrzynka jak to zazwyczaj jest robione, trochę popracuj nad kodem, poczytaj o zasadach dobrego kodu, zastosuj się do nich i będzie okej :)

W aktualizacji v1.1.0 starałem się trochę pousuwać tych statycznych zmiennych i funkcji ale tej nie zauważyłem po prostu, postaram się dodawać nowe aktualizacje :)

Odnośnik do komentarza
https://skript.pl/temat/30043-otch%C5%82a%C5%84-v121/#findComment-197219
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...