Milagors2 0 Opublikowano 21 lipca 2021 Udostępnij Opublikowano 21 lipca 2021 czesc Chcialbym osignąc efekt taki aby gracz gdy dolonczy na serwer bedzie mogl tylko uzyc komendy np /123 cos cos dopiero wtedy bedzie mogl uzyc innych komendy w sensie wszystkich innych Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 161 Opublikowano 21 lipca 2021 Udostępnij Opublikowano 21 lipca 2021 Myślisz o systemie captcha? Jeżeli tak to dużo łatwiej będzie, jeśli skorzystasz z gotowego rozwiązania: https://www.spigotmc.org/resources/captchas-extremely-configurable-1-7-10-1-15-2-new-antibot-features.45922/ https://www.spigotmc.org/resources/mapcha.51630/ https://www.spigotmc.org/resources/krypton.90932/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Milagors2 0 Opublikowano 21 lipca 2021 Autor Udostępnij Opublikowano 21 lipca 2021 nie chce korzystac z kogos wole swoje wiec ponawiam pytanie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 161 Opublikowano 22 lipca 2021 Udostępnij Opublikowano 22 lipca 2021 W takim razie stwórz sobie trzy klasy: - CaptchaStorage - CaptchaCommand implementuje CommandExecutor - JoinListener implementuje Listener - CommandPreprocess implementuje Listener W CaptchaStorage stwórz sobie HashMapę, w której kluczem będzie UUID, a wartością String, zarejestruj stworzone listenery/ustaw executor komendy i do każdej klasy dodaj w konstruktorze wcześniej stworzony storage. W JoinListener stwórz sobie handler do PlayerJoinEvent, w tym miejscu odnieś się do storage i dodaj do niego UUID gracza i losowo wygenerowany ciąg znaków. W CommandPreprocess stwórz handler do PlayerCommandPreprocessEvent, pobieraj sobie UUID gracza i sprawdzaj czy jest obecne w storage. Jeżeli jest to anuluj event. I nareszcie w CaptchaCommand po prostu sprawdzasz czy pierwszy argument wcześniej wygenerowanej metody onCommand odpowiada temu co pobierzesz ze storage i jeżeli jest to usuwasz UUID gracza, który wykonał metodę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Milagors2 0 Opublikowano 22 lipca 2021 Autor Udostępnij Opublikowano 22 lipca 2021 10 godzin temu, LeviBoyPL napisał: W takim razie stwórz sobie trzy klasy: - CaptchaStorage - CaptchaCommand implementuje CommandExecutor - JoinListener implementuje Listener - CommandPreprocess implementuje Listener W CaptchaStorage stwórz sobie HashMapę, w której kluczem będzie UUID, a wartością String, zarejestruj stworzone listenery/ustaw executor komendy i do każdej klasy dodaj w konstruktorze wcześniej stworzony storage. W JoinListener stwórz sobie handler do PlayerJoinEvent, w tym miejscu odnieś się do storage i dodaj do niego UUID gracza i losowo wygenerowany ciąg znaków. W CommandPreprocess stwórz handler do PlayerCommandPreprocessEvent, pobieraj sobie UUID gracza i sprawdzaj czy jest obecne w storage. Jeżeli jest to anuluj event. I nareszcie w CaptchaCommand po prostu sprawdzasz czy pierwszy argument wcześniej wygenerowanej metody onCommand odpowiada temu co pobierzesz ze storage i jeżeli jest to usuwasz UUID gracza, który wykonał metodę. co mam zrobic w tym CommandPreprocess bo jedyne co wywnioskowałem to cos takiego "public void CommandPreprocess(CommandSender sender, Command arg1, String lab, String[] args) { }" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
1 LeviBoyPL 161 Opublikowano 22 lipca 2021 Udostępnij Opublikowano 22 lipca 2021 CommandPreprocess powinien implementować Listener, zatem metoda powinna mieć adnotację nad sobą (@EventHandler) i tak jak wcześniej wspomniałem handler powinien obejmować PlayerCommandPreprocessEvent, zatem metoda powinna wyglądać tak: @EventHandler public void commandPreprocess(PlayerCommandPreprocessEvent event) { } Dodatkowo, nazwy metod piszemy camelCase, więc zamiast CommandPreprocess powinieneś użyć commandPreprocess Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Milagors2 0 Opublikowano 22 lipca 2021 Autor Udostępnij Opublikowano 22 lipca 2021 31 minut temu, LeviBoyPL napisał: CommandPreprocess powinien implementować Listener, zatem metoda powinna mieć adnotację nad sobą (@EventHandler) i tak jak wcześniej wspomniałem handler powinien obejmować PlayerCommandPreprocessEvent, zatem metoda powinna wyglądać tak: @EventHandler public void commandPreprocess(PlayerCommandPreprocessEvent event) { } Dodatkowo, nazwy metod piszemy camelCase, więc zamiast CommandPreprocess powinieneś użyć commandPreprocess @EventHandler public void commandPreprocess(PlayerCommandPreprocessEvent ev) { Player p = ev.getPlayer(); UUID uuid = p.getUniqueId(); } Mam juz cos takiego co dalej "pobieraj sobie UUID gracza i sprawdzaj czy jest obecne w storage. Jeżeli jest to anuluj event." co tutaj mam zrobic ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 161 Opublikowano 22 lipca 2021 Udostępnij Opublikowano 22 lipca 2021 Wtedy pobierz sobie mapę ze storage i sprawdź czy jest w niej obecne UUID, które wcześniej sobie wyciągnąłeś od gracza Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Milagors2 0 Opublikowano 22 lipca 2021 Autor Udostępnij Opublikowano 22 lipca 2021 3 minuty temu, LeviBoyPL napisał: Wtedy pobierz sobie mapę ze storage i sprawdź czy jest w niej obecne UUID, które wcześniej sobie wyciągnąłeś od gracza jak mam ja pobrac? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 161 Opublikowano 22 lipca 2021 Udostępnij Opublikowano 22 lipca 2021 W 12 godzin temu, LeviBoyPL napisał: W CaptchaStorage stwórz sobie HashMapę, w której kluczem będzie UUID, a wartością String, zarejestruj stworzone listenery/ustaw executor komendy i do każdej klasy dodaj w konstruktorze wcześniej stworzony storage. W konstruktorze masz swój storage, więc pobierasz albo za pomocą dostępu do pola czyli storage.uwtorzonaWczesniejMapa.get(uuid) albo robisz sobie getteta w storage Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Milagors2 0 Opublikowano 22 lipca 2021 Autor Udostępnij Opublikowano 22 lipca 2021 18 minut temu, LeviBoyPL napisał: W W konstruktorze masz swój storage, więc pobierasz albo za pomocą dostępu do pola czyli storage.uwtorzonaWczesniejMapa.get(uuid) albo robisz sobie getteta w storage dalej nie rozumiem jak by to mialo wyglondac Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 161 Opublikowano 22 lipca 2021 Udostępnij Opublikowano 22 lipca 2021 W takim razie zapraszam do zapoznania się z kursem z podstawami https://javastart.pl/baza-wiedzy/java-podstawy-jezyka Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 rozumek29 13 Opublikowano 22 lipca 2021 Udostępnij Opublikowano 22 lipca 2021 (edytowane) potrzebujesz dwa listenery. pierwszy PlayerJoinEvent który po wejściu gracza na serwer będzie dodawał go do Listy niezautoryzowanych graczy. Musisz oczywiście wcześnie stworzyć taką listę. drugi OnCommand, który będzie sprawdzał czy gracz jest w liście niezautoryzowanych graczy, jeśli tak to sprawdza następnie czy komenda którą chciał wywołać to ta o którą ci chodzi (np /captacha), jeśli nie to zwracasz false. Nie zapomnij usunąć gracza z listy niezautoryzowanych graczy po przejściu weryfikacji. Nie wiem czy wyjaśniłem to wystarczająco dobrze, ale z poprzednich twoich wypowiedzi polecam zrobić porządnie kurs javy, a dopiero później brać się za pisanie pluginów. Tutaj masz fajny kurs na youtubie Edytowane 22 lipca 2021 przez rozumek29 Zła nazwa klasy listenera. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 kerpson 550 Opublikowano 22 lipca 2021 Udostępnij Opublikowano 22 lipca 2021 Tutaj kuleją podstawy, i to bardzo mocno. Należy podszkolić się w nich. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
Milagors2 0
czesc Chcialbym osignąc efekt taki aby gracz gdy dolonczy na serwer bedzie mogl tylko uzyc komendy np /123 cos cos dopiero wtedy bedzie mogl uzyc innych komendy w sensie wszystkich innych
Odnośnik do komentarza
Udostępnij na innych stronach
13 odpowiedzi na to pytanie
Rekomendowane odpowiedzi