Skocz do zawartości

Pick up chest - Prosty plugin do podnoszenia skrzynek


Rekomendowane odpowiedzi

Cześć. Chciałem się podzielić moim nie pierwszym w życiu pluginem ale pierwszym, który opublikowałem w internecie. W przyszłości planuję dodać permisję, która ustawi limit podnoszonych skrzyń. 

Link: https://www.spigotmc.org/resources/pick-up-chest.108004/
Source: https://github.com/gujix64/PickUpChest

Odnośnik do komentarza
https://skript.pl/temat/54406-pick-up-chest-prosty-plugin-do-podnoszenia-skrzynek/
Udostępnij na innych stronach

11 minut temu, Szwagru napisał:

Wow bardzo ciekawy plugin, jeżeli graczom się spodoba, na pewno go użyje!

Dzięki chętnie przeczytam twoją opinię odnośnie tego co dodać lub zmienić aby działanie pluginu było przyjemniejsze. To pierwsza wersja i mam jeszcze fajne plany co do tego. W przyszłości chciałbym przerobić plugin tak aby przedmioty były zapisywane w skrzyni a nie były przypisane do gracza. To pozwoli na zabicie kogoś i zebrania jego skrzynki o ile taką będzie miał. Aktualnie działa to na zasadzie, że itemy są w schowku gracza i pojawią się jedynie jeżeli to gracz położy skrzynie (takie zabezpieczenie przed podnoszeniem skrzyń i wyrzucaniem bo w taki sposób mamy zwykły shulkerbox). 

Edytowane przez gujix64
Odnośnik do komentarza
https://skript.pl/temat/54406-pick-up-chest-prosty-plugin-do-podnoszenia-skrzynek/#findComment-330136
Udostępnij na innych stronach

Update pluginu do wersji 1.1
- Naprawiono błąd polegający na duplikowaniu skrzyń kiedy serwer został zrestartowany bądź zamknięty
- Naprawiono zapisywanie się itemów w configu
- Poprawiono optymalizacje min. usunięcie mapy i działanie tylko na plikach
- Brak możliwości wyrzucenia skrzynki
- Brak możliwości interakcji ze skrzynką w ekwipunku
- Brak możliwości wydropienia skrzynki podczas śmierci
- Skrzynka po śmierci dodaje się automatycznie do ekwipunku

Planowane rzeczy w następnej wersji
- Dodanie pliku językowego
- Dodanie opcjonalnego efektu dla gracza ze skrzynką aż do jej postawienia
- Możliwość wydropienia wszystkich itemów ze skrzynki podczas śmierci (opcjonalne)
 

Odnośnik do komentarza
https://skript.pl/temat/54406-pick-up-chest-prosty-plugin-do-podnoszenia-skrzynek/#findComment-330148
Udostępnij na innych stronach

Cześć! Fajnie, że publikujesz kod na githubie. 

Czy przypadkiem twój listener nie będzie powodował błędów jak ktoś sobie nazwie przedmiot "Picked Chest" i nie będzie mógł z niego już korzystać? 

EventHandler

    public void onInventoryClick(InventoryClickEvent event) {

        Player player = (Player) event.getWhoClicked();

        ItemStack clickedItem = event.getCurrentItem();

 

        if (clickedItem != null && clickedItem.hasItemMeta() && clickedItem.getItemMeta().getDisplayName().equals("Picked Chest")) {

            event.setCancelled(true);

            player.updateInventory();

        }

    }

 

Na resztę kodu nie patrzyłem szczegółowo, ale trochę szkoda że te metody są takie duże.

Odnośnik do komentarza
https://skript.pl/temat/54406-pick-up-chest-prosty-plugin-do-podnoszenia-skrzynek/#findComment-330154
Udostępnij na innych stronach

46 minut temu, opkarol napisał:

Cześć! Fajnie, że publikujesz kod na githubie. 

Czy przypadkiem twój listener nie będzie powodował błędów jak ktoś sobie nazwie przedmiot "Picked Chest" i nie będzie mógł z niego już korzystać? 

EventHandler

    public void onInventoryClick(InventoryClickEvent event) {

        Player player = (Player) event.getWhoClicked();

        ItemStack clickedItem = event.getCurrentItem();

 

        if (clickedItem != null && clickedItem.hasItemMeta() && clickedItem.getItemMeta().getDisplayName().equals("Picked Chest")) {

            event.setCancelled(true);

            player.updateInventory();

        }

    }

 

Na resztę kodu nie patrzyłem szczegółowo, ale trochę szkoda że te metody są takie duże.


Cześć. Samo nazwanie skrzyni Picked Chest błędów nie powinno tworzyć, ponieważ po postawieniu skrzynki o nazwie Picked Chest w środku będziemy mieli pustą zwykłą skrzynkę. Inventory skrzynki przypisane jest do gracza więc nawet jeśli wejdziemy w posiadanie skrzynki Picked Chest to po postawieniu jej z configu wczyta się, że nic nie mamy przypisane. Gracz jednak nie może jej nazwać, ponieważ interakcja ze skrzynką "Picked Chest" w ekwipunku jest zablokowana to samo tyczy się kowadła. W sumie tyczy się to wszystkich itemów o nazwie Picked Chest więc nie dość, że nie możemy nazwać tak skrzynki to nawet żadnego innego przedmiotu. Masz rację co do metod podzielę kod na pod funkcje i zrobię refactoring kodu :D

Odnośnik do komentarza
https://skript.pl/temat/54406-pick-up-chest-prosty-plugin-do-podnoszenia-skrzynek/#findComment-330155
Udostępnij na innych stronach

A ja wypowiem się na temat samego kodu.

 

1. Brak rozdzielenia danych funkcji na klasy, powinieneś operować na wielu klasach, to znaczy, żeby dla eventów robić oddzielne klasy. Pozwoli to zachować czystość kodu.

2. Żywcem pobierane dane z configu podczas wykonywania akcji. Nie jest to dobry sposób, gdyż w przypadku większej ilości osób plik z automatu będzie większy co dodatkowo zwiększy czas czytania z niego danych. Lepiej przechowywać te dane w objekcie a potem je tylko ewentualnie zapisywać. Dodatkowo przy interakcji zapisujesz cały config.

3. Ten fragment bardzo mi się nie podoba.

File configFile = new File(getDataFolder(), "config.yml");
        if (!configFile.exists()) {
            try {
                configFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        config = YamlConfiguration.loadConfiguration(configFile);

Jeżeli plik się nie stworzy powinieneś wyłączyć plugin, wysłać informację za pomocą loggera o błędzie.

 

4. Przed castowaniem powinieneś sprawdzić czy osoba, która kliknęła to na pewno jest gracz.

Player player = (Player) event.getWhoClicked();

 

Mimo wszystko tragedii nie ma i życzę powodzenia w dalszym kodowaniu.

Odnośnik do komentarza
https://skript.pl/temat/54406-pick-up-chest-prosty-plugin-do-podnoszenia-skrzynek/#findComment-330416
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ę...