Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] Jak w Eclipse zrobić żeby plugin wyświetlał nazwę gracza i argumenty


Rekomendowane odpowiedzi

Opublikowano

Witam.

Oto jest kod mojego pluginu na wysyłanie wiadomości do graczy:

 

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
Player player = (Player) sender;
if(cmd.getName().equalsIgnoreCase("pm")) {
if(args.length == 0 || args.length == 1) {
player.sendMessage("§cPrawidlowe uzycie: /pm (nick) (wiadomosc)"); 
}
if(args.length >= 2) {
String pName = args[0];
String text = args[1];
if(Bukkit.getPlayer(pName) != null) {
Player p = Bukkit.getPlayer(pName);
player.sendMessage("§3Ja -> " + pName + ": " + text);
p.sendMessage("§3" + player + " -> " + "Ja" + ": " + text);
}
}
}
return false;

No i niestety ale nie działa tak jak bym chciał, mianowicie jak wysyłam wiadomość do kogoś to się wyświetla dobrze ale jak ktoś do mnie to moja nazwa gracza wyświetla się mniej więcej tak: CraftPlayer{name=CyberBot} a chciałbym żeby wyświetlało się tylko CyberBot.

Po drugie wysyła się tylko pierwszy wyraz wiadomości którą wysyłam, np jak wyślę /pm CyberBot wiadomosc testowa to otrzymam tylko słowo wiadomosc bez reszty wiadomosci. Nie mogę sobię z tym poradzić, myślę że coś trzeba zrobić z preinkrementacją ale nie wiem. Prosze o pomoc.

 

Opublikowano

Dzięki, działa. Jedyny problem pozostaje jeszcze z drugim argumentem. Jak zrobić żeby drugi argument był całym końcem komendy. Np. Jak wpiszę /pm CyBerBot SIema to ja!

To CyberBot otrzyma: CyberBot -> Ja: Siema to ja!, a nie samo Siema

Jak to zrobić?

Opublikowano

String str = StringUtils.join(array, separator, startIndex, endIndex)­

jeko separator dajesz spacje: ' '

array to te twoje argumenty

no i początkowy index i końcowy indzex, np od 1 do 5 argumentu.

1438614356923701010629.png

 

Opublikowano
String str = StringUtils.join(args[1], ' ', 1, 100);

Tak dodałem i nie działa. Nie wiem jak mam to dodać ja jestem zielony w tworzeniu pluginów... Nie wiem gdzie to dodać. Proszę o pomoc.

Opublikowano

Proszę oto kodzik na prywatne wiadomości ;)

 

KOD: http://pastebin.com/pnmPTkDt

i dodaje nie potrzebnie spacje na końcu, niby w wiadomości to nie ma większego znaczenia, ale...

 

 

String str = StringUtils.join(args[1], ' ', 1, 100);

Tak dodałem i nie działa. Nie wiem jak mam to dodać ja jestem zielony w tworzeniu pluginów... Nie wiem gdzie to dodać. Proszę o pomoc.

 

miałeś tam dać wszystkie argumenty, jaki sens ma łączenie jednego argumentu? ;)

String str = StringUtils.join(args ' ', 1, 100);

I tak dalej jest źle, bo twój "args" nie ma rozmiaru 100, powinieneś dać:


String str = StringUtils.join(args ' ', 1, args.length); 

I to ma tylko jedną linijkę, więc wygodniejsze :D

+ jak chcesz łączyć wszystkie argumenty, możesz dać:

String str = StringUtils.join(args ' '); 

­

1438614356923701010629.png

 

Opublikowano

A jak zrobić jeszcze żeby można było użyć /re (wiadomość) i wyśle do tego gracza co ostatnio wysyłał do ciebie wiadomość? Próbowałem sam ale żadnego sensownego kodu nie wymyśliłem. Proszę o pomoc.

Opublikowano

A jak zrobić jeszcze żeby można było użyć /re (wiadomość) i wyśle do tego gracza co ostatnio wysyłał do ciebie wiadomość? Próbowałem sam ale żadnego sensownego kodu nie wymyśliłem. Proszę o pomoc.

musisz po prsotu zapisywać do kogo ostatni raz gracz wysyłał wiadomość, najwygodniej chyba w mapce

Map<UUID, UUID> lastPlayer = new HashMap<>(50);

 

I wtedy podczas wysyłania wiadomości do gracza, dodajesz jego UUID, i UUID osoby do której napisał

lastPlayer.put(jegoUUID, uuidCelu) // UUID pobierasz player.getUniqueId() czy jakoś podobnie

i

I wtedy w komendzie /re

UUID uuid = lastPlayer.get(uuidWysyłającego)

Player target = Bukkit.getPlayer(uuid);

Powinieneś tylko jeszcze sprawdzać czy UUID nie jest nullem, jak jeszcze ktoś do nikogo wczesniej nie pisał.

A tak to wysyłasz wiaodmośc do targeta.

­

1438614356923701010629.png

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...