Jednak tym razem postarałem się i kolejny poradnik napisałem troszkę szybciej niż zazwyczaj 😛
Ostatni poradnik: (#2 Klik)
Dzisiaj zajmiemy się dodaniem komendy /info , storzymy ją w nowej klasie. sprawdzimy uprawnienia, oraz argument komendy to jest to co komenda zawiera po niej, dam przykład /komenda asd - asd to pierwszy argument u nas będzie pierwszym argumentem nick gracza, którego potem będziemy wyświelać informacje na czacie.
Zacznijmy od stworzenia nowej paczki klikając na naszą główną paczkę -> new -> Package nazwijmy ją commands, ja tworzę paczki od głównej aby fajnie się układały w kompilatorze powinno to wygladać w ten sposób, na samym końcu dodajemy kropkę i nazwę - .commands
Gdy stworzymy naszą paczkę stwórzmy nową klasę w niej, kliknij PPM -> new -> Class nazwij ją InfoCommand Kiedy klasa będzie gotowa implementujemy CommandExecutor, importujemy oraz dodajemy nasz kawałek kodu od sprawdzania komendy:
@Override
public boolean onCommand(CommandSender sender, Command cmd, String arg, String[] args) {
return false;
}
teraz dodajmy tam co ma się wykonywać po wpisaniu komendy /info oraz sprawdźmy czy posiada ona wymagany argument 0 (czyli nick [w javie zaczynamy liczyć od 0 jako 1]), jeśli nie ma wyświetlimy poprawne użycie tej komendy.
a więc sprawdzanie czy komenda ma jakiś arugment odbywa się poprzez if(args.length == 0){
możemy używać tam wszystkiego co chcemy, aby uzyskać efekt który nas interesuje (< > ==) w tym przykładzie sprawdzam czy ilość argumentów jest zerowa, jeśli będzie to nie ma nic po /info.
Następnie wyślijmy wiadomość do gracza o poprawnym użyciu komendy, i zakończmy to standardowym return true
którego ja używam, jeśli ktoś pisał w Skript to żeby lepiej to zrozumieć działa to jak stop
Kod na razie wygląda następująco:
To co będę pisać w nastepnej linijce będzie zakładać że argument nick gracza istnieje, a więc weźmy ten nick z arguemntu i pobierzmy z niego gracza aby móc wysyłać do tego "argumentu" wiadomości itd 😄
Player p = Bukkit.getPlayerExact(args[0]);
tym zdefinujemy sobię gracza z argumentu 0
Następnie sprawdzmy czy jest on na serwerze.
if(p == null){
sender.sendMessage("§7Gracz jest offline.");
return true;
}
Tym razem skróciłem sobie czas używając "§" zamiast ChatColor Po kolejnym nawiasie klamrowym będziemy w domu, to znaczy że argument jest, gracz jest offline wszystko się zgadza - możemy wysyłać informacje na jego temat ;)
Mozliwości jest wiele:
To jest tylko przykład ale dorzucę kod:
sender.sendMessage("Nick gracza: " + p.getName());
sender.sendMessage("Poziom glodu gracza: " + p.getFoodLevel());
sender.sendMessage("Poziom HP gracza: " + p.getHealth());
sender.sendMessage("Moze latac: " + p.getAllowFlight());
sender.sendMessage("Tryb gry: " + p.getGameMode());
sender.sendMessage("Adres IP: " + p.getAddress().getAddress().getHostAddress());
sender.sendMessage("Przedmiot w rece: " + p.getItemInHand().getType());
Co do przedmiotu w ręce, jeśli nie ma nic, wyświetli się AIR, co do latania jeśli może wyswietli się true, jesli nie false.
Nie zapomnijmy pokazać pluginowi podczas ładowania że komenda "/info" znajduje się w klasie InfoCommand - przechodzimy do klasy Main, i dodajemy w onEnable getCommand("info").setExecutor(new InfoCommand());
Nie zapomnij o importach, oraz dodaj też tą komende w plugin.yml tak jak w ostatnim poradniku.
Klasa Main: Kliknij na mnie po kodzik :) Klasa InfoCommand:Kliknij na mnie po kodzik :) Plugin.yml: Kliknij na mnie po kodzik :)
Od dziś wrzucam kod na pastebin, co by popatrzeć i ewentualnie skopiować w razie problemów. Będę się starał wrzucać tematy z tej serii coraz częściej, jednak niczego nie obiecuję na 100% Dałbyś "like" za poświęcony czas co? 😄 (Około +/- ponad 1h.) Jeśli o czymś zapomniałem czekam na komentarze :P
Do zobaczenia w następnym poradniku.