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

"Zmienne" w pluginie


Marcim951

Rekomendowane odpowiedzi

Opublikowano

Witam, od nie dawana piszę pluginy do minecrafta i z biegiem czasu chcę powiększać swoją wiedzę, ale jest jeden problem. Ostatnio chciałem napisać plugin na ranking (prosty, nieskomplikowany). Niestety, był problem, chciałem zapisać zabójstwa gracza do jakieś zmiennej, a następnie wyświetlić przy komendzie /gracz. Ale nie umiem. Nie potrafię tworzyć zmiennych "graczowych". Ktoś mógłby mi to wytłumaczyć, jak je się tworzy?

Opublikowano

Jest parę opcji..

 

Na przykład:

 HashMap<UUID, Integer> ranking = new HashMap<>(); 

Teraz odwołujesz się po ,,kluczu" i zawierasz ,,wartość"

Czyli przkładowo:

  ranking.get(p.getUniqueId());

I zwróci Ci to wartość rankingu.

 

Poczytaj sobie więcej o tym tutaj:

http://naukajavy.pl/kurs-jezyka-java/111-mapy

Nie powinienem wysyłać polskich poradników, ale z reguły wiem, że ludzie mają problem z angielskim..

 

 

Inną opcją jest utworzenie obiektu, przykładowo User, trzymać go w jakiś sposób (Na przykład hashmapa UUID, User), bądź liście whatever.

Potem zrobić jakąś metodę od pobrania danych i tak samo na nich działać..

 

Przykładowy User:

@Data
@AllArgsConstructor
public class User {
    private final UUID uuid;
    private String nick;
    private int points;
}

Pamiętaj także, że jeśli takie coś dokonujesz, to jest to tzw. pamięć ulotna (No, czy jakoś tak, j**** nazewnistwo xD) i przy wyłączeniu serwera ,,wyparuje".

 

 

 

@Edit

Swoją drogą, jeśli o to pytasz to:

https://javastart.pl/static/category/podstawy-jezyka/

Zacznij od tego, nie od pluginów.

784091427630431250239.png

Regulamin sygnatur

Opublikowano

Czyli jezeli uzyl bym tej metody pierwszej to wartosci musze importowac, np do pliku YML %player%.config i przy starcie je wczytywac?

Polecałbym ci bardziej użyć do tego bazy danych jak np mysql.

Co ja tutaj robie...

Opublikowano

 

Czyli jezeli uzyl bym tej metody pierwszej to wartosci musze importowac, np do pliku YML %player%.config i przy starcie je wczytywac?

Polecałbym ci bardziej użyć do tego bazy danych jak np mysql.

 

Myślę, że gdy nie tworzę pluginów pod serwery jakieś, a robię to tylko po to, aby się uczyć, to na bazy danych przyjdzie odpowiedni czas.

Bardzo dziękuje Oldisowi, za to że poświęcił mi czas. Jeżeli wyczerpał temat, proszę o zamknięcie.

//Edit Przy evencie PlayerDeathEvent, chcę dodać graczowi a (Player a = e.getEntity().getKiller();) 25 do rankingu, jak to zrobić?

Opublikowano

Oldis napisał ci źle  (mówiąc o tym pierwszym akapicie)

 

 

przy użyciu takiej hashmapy, w założeniu że będziesz wyświetlał więcej niż jedną zmienną (a to chcesz osiągnąć), to przecież nie będziesz tworzył x takich samych mapek o innej wartości, powinno to wyglądać po prostu tak;

 HashMap<UUID, Gracz> ranking = new HashMap<>(); 

Gdzie gracz to twój obiekt w którym przechowujesz nieskończenie wiele informacji

Opublikowano

Oldis napisał ci źle  (mówiąc o tym pierwszym akapicie)

 

 

przy użyciu takiej hashmapy, w założeniu że będziesz wyświetlał więcej niż jedną zmienną (a to chcesz osiągnąć), to przecież nie będziesz tworzył x takich samych mapek o innej wartości, powinno to wyglądać po prostu tak;

 HashMap<UUID, Gracz> ranking = new HashMap<>(); 

Gdzie gracz to twój obiekt w którym przechowujesz nieskończenie wiele informacji

 

Co mu napisałem źle?

I wyjdź z rakowym polskim nazewnictwem, błagam.

 

Zapytał jak przechowywać daną zmienną dla gracza, nie napisał ile ich chce.

Skoro zadaje takie pytanie, to obstawiam, że nie opanuje tego na samym początku, co do niego mówisz.

Dlatego podałem mu ,,najłatwiejsza" do zrozumienia formę.

784091427630431250239.png

Regulamin sygnatur

Opublikowano

Oldis napisał ci źle  (mówiąc o tym pierwszym akapicie)

 

 

przy użyciu takiej hashmapy, w założeniu że będziesz wyświetlał więcej niż jedną zmienną (a to chcesz osiągnąć), to przecież nie będziesz tworzył x takich samych mapek o innej wartości, powinno to wyglądać po prostu tak;

 HashMap<UUID, Gracz> ranking = new HashMap<>(); 

Gdzie gracz to twój obiekt w którym przechowujesz nieskończenie wiele informacji

 

 

Oldis napisał ci źle  (mówiąc o tym pierwszym akapicie)

 

 

przy użyciu takiej hashmapy, w założeniu że będziesz wyświetlał więcej niż jedną zmienną (a to chcesz osiągnąć), to przecież nie będziesz tworzył x takich samych mapek o innej wartości, powinno to wyglądać po prostu tak;

 HashMap<UUID, Gracz> ranking = new HashMap<>(); 

Gdzie gracz to twój obiekt w którym przechowujesz nieskończenie wiele informacji

 

Co mu napisałem źle?

I wyjdź z rakowym polskim nazewnictwem, błagam.

 

Zapytał jak przechowywać daną zmienną dla gracza, nie napisał ile ich chce.

Skoro zadaje takie pytanie, to obstawiam, że nie opanuje tego na samym początku, co do niego mówisz.

Dlatego podałem mu ,,najłatwiejsza" do zrozumienia formę.

 

Okej, a, np. chcę dodać przy zabójstwie do tego, np. 25. Jak to zrobić?

Opublikowano

 

Oldis napisał ci źle  (mówiąc o tym pierwszym akapicie)

 

 

przy użyciu takiej hashmapy, w założeniu że będziesz wyświetlał więcej niż jedną zmienną (a to chcesz osiągnąć), to przecież nie będziesz tworzył x takich samych mapek o innej wartości, powinno to wyglądać po prostu tak;

 HashMap<UUID, Gracz> ranking = new HashMap<>(); 

Gdzie gracz to twój obiekt w którym przechowujesz nieskończenie wiele informacji

 

 

Oldis napisał ci źle  (mówiąc o tym pierwszym akapicie)

 

 

przy użyciu takiej hashmapy, w założeniu że będziesz wyświetlał więcej niż jedną zmienną (a to chcesz osiągnąć), to przecież nie będziesz tworzył x takich samych mapek o innej wartości, powinno to wyglądać po prostu tak;

 HashMap<UUID, Gracz> ranking = new HashMap<>(); 

Gdzie gracz to twój obiekt w którym przechowujesz nieskończenie wiele informacji

 

Co mu napisałem źle?

I wyjdź z rakowym polskim nazewnictwem, błagam.

 

Zapytał jak przechowywać daną zmienną dla gracza, nie napisał ile ich chce.

Skoro zadaje takie pytanie, to obstawiam, że nie opanuje tego na samym początku, co do niego mówisz.

Dlatego podałem mu ,,najłatwiejsza" do zrozumienia formę.

 

Okej, a, np. chcę dodać przy zabójstwie do tego, np. 25. Jak to zrobić?

 

 

Jeśli o takie coś pytasz, to wróć do podstaw javy.

Nie mówię tego ,,chamsko" i by Cię zniechęcić, ale sam wiem, że błądziłem przez dobre 2 miesiące na kopiowaniu kodu i ,,próbowaniu", zamiast siąść i ogarnąć podstawy javy..

 

@AntyWarnZaPrawde

ranking.put(UUID, 25);

784091427630431250239.png

Regulamin sygnatur

Opublikowano

Uzupełnię trochę. Po pierwsze za polskie nazewnictwo powinna być czapa. Po drugie za field o typie HashMap powinno być ucięcie rączki oraz wyjęcie h oraz s z klawiatury (suchy i mało wyrafinowany żart, więc tłumaczę, nazywamy tak jak interfejs). Jako, że kolega zaczyna to pewnie nie wie, że pod żadnym pozorem nie można wsadzać obiektu Player jako klucz mapy. To nie jest prawda, ale na razie tak nie rób.

@Data, @AllArgsConstructor - serio? Na złość mu to robisz? Nawet nie wiem skąd wyciągnąłeś te adnotacje, strzelam lombok.

Dane trzymamy w takich ładnych mapkach, a jak przychodzi czas na wyłączenie serwera to zapisujemy do bazy albo do YAMLa. W przypadku drugiego naprawdę nic się nie stanie jak zapiszesz graczy do jednego lub kilku plików (postaraj się przewidzieć liczbę unikatowych graczy i nie zapisuj graczy których punkty nie różnią się od wartości domyślnej). Dla jednej zmiennej plik dla każdego gracza nie ma sensu, chyba, że tworzysz swoje małe core to od razu możesz tak zrobić :)

Dodaj mój nick do posta jeśli potrzebujesz pomocy | Piszę pluginy na zlecenie | Pomagam z Linuxem

newlogo.png

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...