Skocz do zawartości
Kris2oo1

Otchłań v1.2.1

Rekomendowane odpowiedzi

Użytkownik

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") :

 

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

 

 

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik

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ć" :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik

Wszystko do zmiany, za dużo pisania

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

Edytowane przez BrixNW
Dodałem znaki diakrytyczne.
BrixNW

Dodałem znaki diakrytyczne. 

Notatka dodana przez BrixNW

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
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 :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×