Skocz do zawartości

GotoFinal

Użytkownik
  • Zawartość

    200
  • Rejestracja

  • Ostatnia wizyta

  • Dni z największą liczbą polubień

    2

GotoFinal ostatnio wygrał w dniu 10 lutego

GotoFinal ma najbardziej lubianą zawartość!

5 obserwujących

O GotoFinal

  • Tytuł
    Użytkownik III

Informacje

  • Płeć
    Mężczyzna
  • Hobby
    Programowanie
  • Nick w MC
    GotoFinal

Ostatnie wizyty

760 wyświetleń profilu
  1. Intellij IDEA 2017.3.4

    Emm, znajdz pełny log, nie jestem teraz pewien gdzie będzie, albo gdzieś w instalacji, albo w katalogu tego typu: C:\Users\Admin\.IntelliJIdea2018.1\system\log oczywiście dostosuj wersję i nazwę użytkownika. poklikaj też na te błędy, bo często da się zobaczyć log/stacktrace bezpośrednio z IDE o tutaj: I wklej wtedy co tam masz, ale zgaduje że to jakieś problemy z uprawnieniami programu czy coś takiego - i np system nie pozwala intellij stworzyć nowego pliku.
  2. Javac CMD

    no to najwidoczniej twoja instalacja jest nie jest w C:\Program Files\Java\ jdk1.8.0_101\bin wejdz do program files i poszukaj poprawnej ścieżki
  3. Javac CMD

    i jak wpiszesz w konsolę "C:\Program Files\Java\ jdk1.8.0_101\bin\javac" to działa? (razem z cytatami musisz wpisać), jak tak to po restarcie okienka cmd już powinno działać samo javac
  4. Javac CMD

    co za dziwne spacje tam masz?
  5. xTT-Pomoc - Łatwy w obsłudze plugin na Pomoc!

    @yooniks No ale taki styl jest bardzo prosty example: |- pierwsza linijka druga linijka trzecia linijka Wystraczy tylko zostawić w domyślnym configu przykład z użyciem takiego zapisu
  6. xTT-Pomoc - Łatwy w obsłudze plugin na Pomoc!

    @[email protected]@yooniks Co wy się tak upieracie na te StringList, toż YAML wspiera wielolinijkowe teksty i to na wiele sposobów: example: 'pierwsza linijka druga linijka trzecia linijka' example: 'pierwsza linijka druga linijka trzecia linijka' example: "pierwsza linijka\ndruga linijka\ntrzecia linijka" example: |- pierwsza linijka druga linijka trzecia linijka example: |4- pierwsza linijka druga linijka trzecia linijka example: pierwsza linijka druga linijka trzecia linijka example: >- pierwsza linijka druga linijka trzecia linijka Wszystkie te dadzą taki sam wynik, czyli jeden string z trzema linijkami tekstu. Dodatkowo małe objaśnienie co do | i >. I oznacza że tekst ma być dokładnie taki jak podany, czyli nowe linijki mają się zachować w pełni, a dla > trzeba dać przerwę by była nowa linijka, inaczej je zwinie do jednej, przydatne dla długich tekstów. Obie te możliwości mają kilka opcji, np dodanie znaku + lub -, oznacza to czy na końcu ma być dodatkowa pusta linijka (jeśli to +), plus jest domyślną wartością. Oraz można też podać indent czyli liczbę spacji, domyślnie jest to ilość spacji taka jak w pierwszej linijce, dzięki temu można dodać wcięcie w wiadomości. I wtedy można wygodnie to wczytać jako jeden string.
  7. CheckPoint Parkour

    sformatuj ten kod normlanie bo tego się czytać nie da, losowo masz te wcięcia porobione, każde IDE ma skrót od formatowania, np Ctrl + Alt + L, lub Ctrl + Shift + f
  8. Zmienna int, boolean dla danego gracza.

    nie używaj Thread.sleep, nigdzie. Jak używasz tego w wątku serwera to zatrzymuje to cały serwer na ten podany czas... Do tego taką mapkę musiałbyś zapisywać przy zmianach i wczytywać na starcie serwera skoro chcesz tam przechowywać coś na stałe. A przechowywanie po Player w mapce też nie jest dobrym pomysłem - szczególnie jak jesteś początkujący, bo jak dodasz gracza do libki i on wyjdzie z serwera to dalej trzymasz go w mapce - a taki obiekt gracza przechowuje bardzo duże ilości danych, które zamiast zostać usunięte musza być dalej trzymane w pamięci. Lepiej trzymać po UUID. System.out.println("[Poradniki] Enabling..."); System.out.println("[Poradniki] Enabled."); Tego nie potrzebujesz, bukkit sam wysyła takie wiadomości, a do tego System.out się prawie nie używa, masz metodę w JavaPlugin, getLogger().log("wiadomość"); wtedy bukkit sam doda odpowiedni tag [Pluginu] Ale zapisu i odczytu to ja cię tutaj nie nauczę, bo zwyczajnie mi się nie chce, musisz poczytać o YamlConfiguration pod bukkita, na pewno znajdziesz sensowne wyjaśnienia. Ewentualnie zadaj konkretniejsze pytanie wtedy tutaj jak coś nie będzie ci wychodzić.
  9. Java obiekty itd.

    Ale nie ogarniam obiektów, wiem do czego są i jakie jest ich przeznaczenie, ale, nie ogarniam po co dawać je w klasie prywatnej coś tu mącisz, klasa definuje typ, a instancja tego typu (czyli klasy) to obiekt. No i w javie z obiektów to korzystamy prawie wszędzie, jak robisz coś statyczego to w większości przypadków robisz to źle, dodatkowo jak robisz wiele mapek po tym samym kluczu - to pewnie też jest to źle, np: private final Map<UUID, Double> playerMoney = new HashMap<>(); private final Map<UUID, Integer> playerPoints = new HashMap<>(); to jest to zdecydowanie źle i do dupy, powinien być użyty właśnie specjalny obiekt: public class MyPluginUser { private final UUID uuid; private double money; private int points; public double getMoney() { return this.money; } // + konstruktor i inne gettery/settery tam gdzie potrzeba i inne metody } i wtedy robi się jedną mapkę UUID -> MyPluginUser. A gettery i settery są dla hermetyzacji, tak że w razie czego możesz np zmienić sposób w jaki przechowujesz punkty a reszta kodu zostaje taka sama, np wyobraź sobie taki kod jak wyżej, oraz ze teraz rezygnujesz ze wspierania pieniędzy w swoim pluginie i przerzucasz to do innego pluginu i zamiast musieć edytować caly plugin zmieniam tylko getter na np: public double getMoney() { return JavaPlugin.getPlugin(InnyPlugin.class).getUsers().getUser(this.uuid).getMoney(); } i kompatybilność zachowana + nie trzeba edytować żadnego innego miejsca w kodzie. Do tego nie nalezy wcale dawać getterów i setterów do wszystkiego, tak na prawdę to tym mniej tym lepiej, a już tym bardziej nie powinno się tworzyć kodu potem tylko na tych getterach/setterach, np mając własny system komend nie powinno się potem sprawdzać czy wpisana komenda jest taka sama jak nazwa komendy lub jej aliasy na np zasadzie: String usedCommand = ...; // to co wpisal gracz jako nazwę komendy for (MyCommand command : myCommands) { // zakladamy że mamy jakąś listę tych komend if (command.getName().equals(usedCommand) || command.getAliases().contains(usedCommand)) { command.use(player, args, cokolwiek); } } Tylko poprawnie MyCommand powinno mieć metodę która sama zrobi te sprawdzenia, więc końcowy kod wygląda tak: String usedCommand = ...; // to co wpisal gracz jako nazwę komendy for (MyCommand command : myCommands) { // zakladamy że mamy jakąś listę tych komend if (command.isMatchingName(usedCommand)) { command.use(player, args, cokolwiek); break; } } Wtedy nawet nie ma potrzeby tworzenia gettera nazwy czy aliasów. (no ale w tym wypadku może się pojawiać potrzeba z innego powodu, np tworzenia listy komend czy coś) A plusem takiego zapisu jest fakt że to już sama komenda definiuje jak powinna być używana, to ona decyduje czy ignoruje wielkość liter czy nie, więc osoba używająca tego juz nie musi o tym myśleć. PS: przechowywanie kasy w double to tak na prawdę średnio dobry pomysł, no ale to tylko gra to nikt prawdziwej kasy nie straci.
  10. Czemu to nie dziala v2

    for (String s : Main.getPlugin(Main.class).getConfig().getStringList("message.sendJoin")) { s = s.replace("&", "§"); s = s.replace("{NICK}", p.getName()); e.setJoinMessage(s); } i to też nie ma sensu, po pierwsze od kolorowania teksu nie używa się replace tylko metody z ChatColor.translate.... A do tego jak masz listę wiadomości to ustawi ci wiadomość wejścia na jej ostatnią linijkę... nie wiem czemu nawet myślałeś że to może działać inaczej. do tego nie widzę sensu używa tutaj listy, YAML wspiera wielolinijkowe teksty.
  11. Czemu to nie dziala v2

    Ale to masz PlayerJoinEvent, to jak chcesz tu ustawić wiadomość wyjścia skoro gracz nie wychodzi...
  12. [Java]Problem z konstruktorem.

    no bo musisz mieć też w klasie pole dla tego "r" i w kontruktorze przypisać https://docs.oracle.com/javase/tutorial/java/javaOO/classes.html
  13. Nie używaj mysql bezpośrednio w komendach w głównym wątku serwera, ktoś może spamować komendą i znacznie spowolnić serwer. Do tego nie sprawdzasz czy połączenie dalej jest "żywe" jak serwer długo nic nie będzie robił to połączenie może dostać timeouta i wszystkie kolejne operacja wywalą błędem. Do tego łapiesz sobie SQLException ale nic z nim nie robisz, ot wypisujesz do konosli, a gracz co wpisał komendę nie widzi żadnego outputu i nie wie co się dzieje. Tak samo powinno się uniknąć używnaia MySQL w dowolnych eventach, chyba ze są Async - ale wtedy i tak zazwyczaj lepiej unikać. No i po co aż 100 znaków na nick czy ip? Np by zrobić GUI możesz po wpisaniu komendu rozpoczać task Async i w nim pobrać wszystkie potrzebne dane z MYSQL i je przygotować, i wtedy odpalić kolejny task już sync i otworzyć te EQ z już gotowymi danymi. I tak z każdą komendą co używa jakiejś bazy danych.
  14. Online Players

    skąd wy macie pomysły na te bezsensowne kody. Ogólnie to polecam jednak zacząć od jakiś podstaw javy tutaj, bo taka operacja nie ma sensu... niby jak ma zadziałać przypisanie liczby do zmiennej obiektowej? co ma się niby stać? język ma się magicznie domyślić co chcesz osiągnąć? trochę logiki... język niczego się za ciebie nie domyśli. Tak to trudno tu cokolwiek więcej pomóc bo nawet nie opisałeś dobrze co chcesz osiągnąć... my też się nie domyślimy.
  15. QuickRoads - Szybsze poruszanie po blokach

    no nie za bardzo, bo wstawiłeś tego taska do eventu dalej... To powinno być w np OnEnable, jako task z pętlą po graczach online. coś na zasadzie: new BukkitRunnable() { @Override void run() { for (Player p:Bukkit.getOnlinePlayers()) { Block block = p.getLocation().getBlock().getRelative(0, -1, 0); Integer speed = speedBlocksMap.get(block.getType()); if (speed == null) continue; // null czyli nie ma w mapie // nadanie efektu na np 2 sekundy i tej pobranej mocy } } }.startTaskTimer(this, 10,10); Można by też dodac sprawdzenie by nie nadawać efektu komuś kto już ma speeda o silniejszej mocy, lub napisać sprytniejszy system który to zsumuje na czas bycia na tym innym bloku.
×