Hej, chciałem zrobić plugin na statystyki gracza wraz z zapisem do bazy danych MySQL. Projekt wyglądał tak: Gracz wykonuje jakąś akcję, która jest nasłuchiwana przez plugin, np. kopie jakąś rudę, plugin sprawdza jaka to ruda i dodaje + 1 do obecnej wartości. Używam enuma do identyfikacji śledzonych statystyk. Wydaję mi się, że bezpośrednie zapytania do MySQL z prośbą o UPDATE mogą być nieco obciążające dla serwera kiedy jest np. 50 graczy, toteż postawiłem na hashmapy. Kiedy gracz wychodzi z serwera, wykonuje się funkcja "przelecenia" przez enum i zapisanie statystyk do bazy MySQL. Oprócz tego planuje autosave tych statystyk(10-20 min). Mój bezpośredni problem dotyczy hashmapy. Aby uniknąć tworzenia hashmap dla każdej wartości enuma(chyba, że faktycznie powinienem, nie jestem pewien, ale podzielcie się opiniami), postanowiłem stworzyć nową klase SaveMapValue w której utworzyłem po prostu
publicSaveMapValue(Player v1,DataSaved v2){}
Gdzie DataSaved to wspomniany enum. Dzięki temu tworzę Hashmapę HashMap<SaveMapValue, Integer> i ustawiam wartość saveMap.put(new SaveMapValue(p, datasaved), 0). To działa. Problem jest kiedy chce odczytać tę wartość lub ją zmienić. Taka funkcja:
Pytanie
CookieMonster85 0
Hej, chciałem zrobić plugin na statystyki gracza wraz z zapisem do bazy danych MySQL. Projekt wyglądał tak: Gracz wykonuje jakąś akcję, która jest nasłuchiwana przez plugin, np. kopie jakąś rudę, plugin sprawdza jaka to ruda i dodaje + 1 do obecnej wartości. Używam enuma do identyfikacji śledzonych statystyk. Wydaję mi się, że bezpośrednie zapytania do MySQL z prośbą o UPDATE mogą być nieco obciążające dla serwera kiedy jest np. 50 graczy, toteż postawiłem na hashmapy. Kiedy gracz wychodzi z serwera, wykonuje się funkcja "przelecenia" przez enum i zapisanie statystyk do bazy MySQL. Oprócz tego planuje autosave tych statystyk(10-20 min). Mój bezpośredni problem dotyczy hashmapy. Aby uniknąć tworzenia hashmap dla każdej wartości enuma(chyba, że faktycznie powinienem, nie jestem pewien, ale podzielcie się opiniami), postanowiłem stworzyć nową klase SaveMapValue w której utworzyłem po prostu
Gdzie DataSaved to wspomniany enum. Dzięki temu tworzę Hashmapę HashMap<SaveMapValue, Integer> i ustawiam wartość saveMap.put(new SaveMapValue(p, datasaved), 0). To działa. Problem jest kiedy chce odczytać tę wartość lub ją zmienić. Taka funkcja:
wywala wtedy mi NullPointerException:
Byłbym wdzięczny za wszystkie rady!
Edytowane przez CookieMonster85Odnośnik do komentarza
https://skript.pl/temat/42408-zapisywanie-statystyk-gracza-w-hashmapie/Udostępnij na innych stronach
5 odpowiedzi na to pytanie
Rekomendowane odpowiedzi