Skocz do zawartości

LeviBoyPL

Użytkownik
  • Ilość zawartości

    716
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    15

Ostatnia wygrana LeviBoyPL w dniu 8 listopada 2023

Użytkownicy przyznają LeviBoyPL punkty reputacji!

3 obserwujących

O LeviBoyPL

  • Urodziny 05/02/1999 (24.978563031 lat)

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Aether
  • Nick w MC
    LeviPlayGames

Ostatnie wizyty

5719 wyświetleń profilu

Osiągnięcia LeviBoyPL

  1. https://space-dimensions-mod.fandom.com/wiki/Space_Dimensions_Mod_Wiki
  2. Gierki nie pobierałem, ale na podstawie screenów i opinii o poprzedniej aplikacji mogę powiedzieć dobra robota Przyjemny design przyjąłeś dla apek. Fajnie widzieć, że chłopaki, którzy robili jakieś skrypty, robią totalnie nowe rzeczy
  3. Nie wiem jak reszta, ale koks ma tylko swoje pluginy z wyjątkiem ac i api do modeli petów
  4. Nie widziałem tej libki, ani w zasadzie nigdy nie znam pytona, ale zgaduję, że brakuje Ci adnotacji @bot.event nad member join.
  5. Na jednej kopii gry może grać jedna osoba jednocześnie. Nie możesz kupić jednej gry i zrobić tak, żeby korzystały z tego równocześnie 3 inne osoby. Wersję gry można wybrać z poziomu launchera, należy wybrać opcję "Instalacje" na górnej wstążce, nowa instalacja i w polu wersja wybrać konkretną wersję. Między wersjami można przełączać się wracając do opcji "graj" i po lewej stronie jest wybór wersji.
  6. Żeby mieć placeholdery musiałbyś dodać je w wiadomościach rankMessages.put("joinmessage.rank.admin", "+ admin %player%"); I później zamieniać podczas wysyłania event.setJoinMessage(highestMessage.replaceAll("%player%", event.getPlayer().getName());
  7. Przeanalizuj sobie ten kod po kolei co on robi. Napisałem to tak, że masz mapkę z wartościami klucz permisji -> wiadomość, później, żeby sprawdzić jaka jest kogoś najwyższa permisja w danym momencie to przez tą mapkę sobie loopuje i zmieniam wartość highestMessage jeśli gracz ma daną permisję. Ważne w zasadzie jest to, żeby te wiadomości układać od najmniejszej do największej, bo w innym wypadku gracz który ma uprawnienia .admin i .player dostanie wiadomość ostatnią z tej listy. Jeśli chciałbyś to zrobić porządnie to musiałbyś pobierać rangę gracza i to na niej opierać wyświetlaną wiadomość.
  8. public class WelcomeMessagesPlugin extends JavaPlugin implements Listener { private Map<String, String> rankMessages; @Override public void onEnable() { getServer().getPluginManager().registerEvents(this, this); initializeRankMessages(); } @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); String playerName = player.getName(); String highestMessage = "" for(Map.Entry<String, String> entry : rankMessages.entrySet()) { if(player.hasPermission(entry.getKey()) highestMessage = entry.getValue(); } event.setJoinMessage(highestMessage); } private void initializeRankMessages() { rankMessages = new HashMap<>(); rankMessages.put("joinmessage.rank.player", ""); rankMessages.put("joinmessage.rank.mod", "+ mod"); rankMessages.put("joinmessage.rank.admin", "+ admin"); } }
  9. Wszystkie te kody nie będą działać poprawnie, sprawdzają one czy dany NICK jest premium, a nie czy wchodzący gracz jest premium. Do tego raczej będziesz potrzebował sieci bungee, choć może znajdzie się jakiś plugin, który to ogarnia
  10. Albo "większe" serwery mogą robić GUI na pluginach, w których nie ma mowy o żadnym kopiowaniu nawet w przypadku laga.
  11. Kilka uwag: Przede wszystkim, powinieneś stworzyć jedną komendę, np ngen i tam dodać subkomendy add remove i edit Sprawdź konwencja nazewnictwa w javie. Przede wszystkim jak poprawnie nazywać package. Czemu połowa zmiennych i metod jest nazwana po polsku, a drugie pół po angielsku? Zamiast wrzucać isInt i kolor do maina mógłbyś stworzyć klasę ze statycznymi metodami, np Utils i tam wrzucić pomocnicze metody. Pusta klasa GeneratosEvent. Zamiast zmiany wrzucać do configa i czytać ten config co sekundę (co jeśli ktoś chciałby custom czas?), zapisuj obiekty generatora w ramie. Stwórz sobie jakiś GeneratorStorage i tam przechowuj wszystkie generatory, a w tasku zrób foreacha na listę czy mapkę. Akurat w tym przypadku jest to trochę pierdółka, ale ogólnie jest to dość ważny temat. Kod nie jest thread-safe. Jest to dość obszerne pojęcie, dlatego odsyłam do google, ale mogę w skrócie napisać, że chodzi o to, że masz na przykład kod x, y, z = player.getLocation().getDanyBlok(). W tym momencie pobierasz lokalizację gracza za każdym razem od nowa. Kod wykonywany jest synchronicznie, tzn leci linijka po linijce i następuje egzekucja danego fragmentu. Alee w czasie kiedy wykonywany jest Twój kod, dzieje się bardzo wiele wokół. Może na przykład dość do sytuacji, w czasie powiedzmy laga, że gracz zmienił pozycję, a Twój kod jest akurat wykonywany, tzn pobrałeś x, pobrałeś y, nagle jest lag, gracz zmienia pozycję i jest już w innym z, więc ma gena przesuniętego o jedną kratkę. Zapobieganie temu jest bardzo proste. Wystarczy, że pobierzesz raz do zmiennej player.getLocation() i będziesz operował na tej zmiennej. Możesz zrobić sobie klasę Messages, w której statycznie będziesz przetrzymywał wszystkie wiadomości, a wysyłać za pomocą player.sendMessage(Messages.USAGE_REM_GEN), w ten sposób będziesz miał łatwy dostęp do wszystkich wiadomości. Nie używaj & w wiadomościach, bardzo przestarzałe podejście. Zamiast tego powinieneś dodawać kolory przy użyciu ChatColor: player.sendMessage(ChatColor.GRAY + "»..."); albo jeszcze lepiej player.sendMessage(String.format("%s»...", ChatColor.GRAY) Fajny plugin do poćwiczenia, na początek, ale brakuje tutaj trochę elementarnej wiedzy nt programowania jak i programowania w javie. Jeśli wprowadzisz chociaż część zaproponowanych poprawek, to zobaczysz, że zacznie Ci się kodzić lepiej
  12. instrukcja może mieć lekko outdated obrazki, bo widzę, że użyto tam starego poczciwego tplinka, ale zasada działania jest taka sama https://www.wikihow.com/Portforward-Minecraft
  13. public class AutoSell extends JavaPlugin { @Override public void onEnable() { Bukkit.getServer().getScheduler().runTaskTimer(this, () -> { for(Player loopPlayer : Bukkit.getOnlinePlayers()) { loopPlayer.chat("/sell"); } }, 20*60L); } } importy musisz sobie porobić sam, nie udało mi się wywróżyć z fusów szczegółów, ale powinno działać niezależnie od wersji
  14. LeviBoyPL

    Problem z czatem

    if(!ChatOffBlock.muted == false || !ChatOnBlock.muted == false) ta linijka woła o pomste do nieba robisz tak jak kolega wspomniał wyżej, jedną zmienną, która przymuje wartości true i false i jest zmieniana z obu klas później jedynie sprawdzasz if(muted) to oznacza, że muted jest true. Jak nie działa to robisz sobie debuga i wyświetlasz tą zmienną w konsoli.
×
×
  • Dodaj nową pozycję...