Skocz do zawartości
Queito

PublicRPG - Plugin na RPG

Rekomendowane odpowiedzi

Użytkownik

PublicRPG

  • Opis

Witam! Postanowiłem stworzyć swój pierwszy publiczny plugin dla użytkowników którzy ciągle pisali "napisze ktoś mi skrypt na poziomy" itp., sam kiedyś byłem w takiej potrzebie więc i oto plugin. Jest to jak napisałem na początku mój pierwszy publiczny projekt jak z pierwszym configiem; Prosiłbym aby każda osoba coś od siebie dała, co by chciała w pluginie/jakieś dodatkowe opcje w configu, czy w wiadomościach. Pisany plugin na wersje: 1.13.1, działa od 1.8.

Napisałem ten plugin publicznie żeby nauczyć się lepiej programować, bo nikt inny nie widział moich kodów a chcę najlepiej napisać każdy plugin, także proszę wszystkich o opinie o kodzie ;)

  • Możliwości
  1. Awansowanie własnej postaci poprzez zabijanie potworów
  2. Dodanie własnego potwora (małe możliwości)
  3. Zintegrowanie potwora z innym pluginem (zaznaczenie opcji na false oraz dodanie go do listy)
  4. Tworzenie własnych klas (na ten moment zostały usunięte)
  5. Zapis (na tą chwile) tylko na pliki (FLAT)
  6. Rozbudowany config oraz mniej rozbudowane wiadomości
  7. Komendy dla admina (edytowanie, tworzenie, lista, teleport, reset)
  8. Rozdzielanie zebranego expa (shareExp)
  • Komendy

/adminrpg [stworz/edytuj/lista], permisja: admin.adminrpg

/info, permisja: brak

  • Informacje:

Wersja: 1.8.x-1.13.x | Java: 8

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

Kod źródłowy: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Błędy i propozycje: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!, można również tutaj pisać (byłoby najlepiej ;p)

 

Edytowane przez Queito

Udostępnij tę odpowiedź


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

Update v0.3

  • Nowości:
  1. ShareExp - Podzielony exp po graczach
  2. Możliwość włączenie/wyłączenie sharexpa
  3. Nowe komendy: /adminrpg teleport/reset
  4. Nowa zmienna: number, pozwala ustawić ile w danym miejscu ma się zrespić potworów
  5. Większa optymalizacja
  6. Więcej wiadomości
  7. Przetłumaczyłem z polskiego na angielski z komend admina (jeżeli są błędy od razu proszę pisać :p)
  • Informacja
  1. Przy wgraniu pluginu na serwer proszę (niestety) usunąć plik z configiem, messagow oraz pliki z potowami w folderze mobs
  • Poprawki
  1. Naprawiono błąd z brakiem uderzenia graczy
  2. Naprawiono błąd z resetowaniem się hp/many po śmierci

 

Proszę wszystkich abyście dawali swoje propozycję, żeby plugin się rozrósł, aby każdy mógł go z dużą radością używać!

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!  | Kod źródłowy: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
W dniu 23.09.2018 o 11:54, Queito napisał:

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

to nie jest java8? Może się mylę ?

nie ma tu uzytych funkcji javy 8, takie rzeczy to tylko w javie 6 =/ 

 

co do reszty:

    public UserManager getUserManager() {
        if(this.userManager == null) this.userManager = new UserManager();
        return this.userManager;
    }
    public CustomClassManager getCustomClassManager() {
        if(this.customClassManager == null) this.customClassManager = new CustomClassManager();
        return this.customClassManager;
    }

gettery powinny zwracać od razu coś, no chyba, że to singleton czy coś, no a nie widze zebys ustawial gdzies te zmienne na null, wiec nie ma potrzeby nawet takiego sprawdzania, bo są inicjowane w konstruktorze (no i powinny byc rejestrowane w onenable, a nie w konstruktorze)

        for(Entity entity : Bukkit.getWorld("world").getEntities()){
            if(this.mobManager.isMob(entity.getCustomName()) && !(entity instanceof Player)){
                ((LivingEntity) entity).setHealth(0);
            }
        }

od razu mozesz uzyc getlivingentities, no i uzyc streamow =/

    private final Map<String, List<String>> moreMessages = new HashMap<String, List<String>>();

mozesz zastapic to multimapą z guavy

 

ogólnie to jest tu dużo błędów, a kod wygląda nieestetycznie i słabe rozwiązania =/

    public void save(Main main){
        for(User user : main.getUserManager().userSet()){
            if(user.isChanged()){
                new FlatUser(user).save();
            }
        }
    }

tworzysz obiekt tylko po to aby wykonać metode save, od razu w parametrze mozesz dostarczyc usermanager lub od razu liste, bo po co main skoro i tak nie uzywasz wiecej funkcji od niego.

 

nazwy zmiennych z małych liter, tak samo metod i pakietów, klasy z dużych liter.

                for(String string : Messages.getInstance().getList("LevelUpMessage")) {
                    player.sendMessage(string
                            .replace("{LVL}", "" + this.getLevel())
                            .replace("{EXP}", "" + this.getExp())
                            .replace("{NEED}", "" + this.getNeed()));
                }

yaml wspiera wielolinijkowe teksty, tzn.

message: "Pierwsza linia\nDruga linia" #musi być te " ", jest oczywiscie duzo wiecej sposobow na tworzenie takich tekstow, ale ten jest chyba najprostszy dla kogos kto tego nie ogarnia

i wtedy wysylasz to jako jedną wiadomość, do tego zamiast String#replace mozesz uzyc StringUtils.replace, ktore jest kilka razy szybsze.

 

no i tez czasem immutable tez by sie tu przydalo

edit:

no i oczywiscie tutaj flat ssie, do tego widze ze masz tutaj kilka obiektów, które używają metody np. save, mógłbyś pobawić sie z interfejsami lub dziedziczeniem, ładniej by wyszło

Edytowane przez yooniks

Udostępnij tę odpowiedź


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

Update 0.4a

  • W aktualizacji:
  1. Głównie optymalizacja @yooniks
  2. Usunięto na chwilę obecną klasy

Mam w planach za parę aktualizacji wypuścić proste gildie, przywrócić klasy oraz wiele więcej (oraz te propozycje które dojdą od graczy, to na pewno).

Aktualizacja nie była testowana. Proszę o usunięcie wszystkich plików graczy oraz potworów (już ostatni raz no chyba, że coś dojdzie :p).

Udostępnij tę odpowiedź


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

Update 0.4b

  • W aktualizacji:
  1. Naprawiono wiele błędów/niedopatrzeń
  2. Dodano nowe aliasy do komendy /info - /level, /poziom, /gracz
  3. Dodano zmienną do chat formatu {LVL}. Możesz to zastosować np. w essentialsu.
  4. Optymalizacja

Plugin testowany i myślę, że jest stabilny.

Pobieralnia: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! | Kod źródłowy: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Losowy awatar
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

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

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

×