[Plugin] ChatUtility [Hlavně UUID]

Message
Autor
Uživatelský avatar
siOnzee
Příspěvky: 810
Věk: 22
Registrován: 30 lis 2011, 21:40
Reputation: 5
Bydliště: siOnzee.cz
Kontaktovat uživatele:

[Plugin] ChatUtility [Hlavně UUID]

#1 Příspěvekod siOnzee » 14 črc 2014, 19:20

Protože minecraft nyní přechází na UUID, dovolil jsem si pro vás udělat vychytávku. Nepochybuji o tom že většina pluginu nyní bude požadovat UUID. Proto vám představuji ChatUtility. Plugin který se o starosti UUID postará.

Tvůrce: siOnzee
Testováno na: git-Spigot-1517 (MC: 1.7.9) (API version 1.7.9-R0.3-SNAPSHOT)
Verze: 1.0

Jak plugin funguje
Vezme si příkaz který jste přeposlal jako hráč do chatu. (tj. PlayerCommandPreprocessEvent)
Zkontroluje zdali vůbec obsahuje slovo '{UUID='
Pokud obsahuje vezme regex \\{UUID=(\\S+)\\} a nahradí jméno hráče za UUID.
Pokračuje v odeslání příkazu.

Celej kód je ošetřenej Try & Catch, v případě chyby se vypíše do konzole.

V případě že je hráč Online: Systém to bere rovnou z jeho třídy, a je to okamžité.
V případě že je hráč Offline: UUID musí být vygenerováno, a proto je možná malinka odezva.
V případě že nastane chyba: Příkaz se neodešle (zruší se) a napíše vám to
"UUID for "jméno" not found.

Příklad: /giveitem <uuid> <item> //Ovšem UUID hráče neznáme.
Proto díky ChatUtility můžeme použít
/giveitem {UUID=jménoHráče} koloběžka
ve výsledku nám to převede na
/giveitem 4a2e865c-cba9-3f81-b62e-9b0ca96c5ae7 koloběžka
A odešle se jako normalní příkaz který posílá hráč.

V Konzoli uvidíte ''issued server command: /giveitem {UUID=jménoHráče} koloběžka"

ALTGR = Pravý ALT na klávesnici (nikoliv levý)
+ = Je potřeba ALT držet a pak zmáčknout příslušnou klávesu a zase ho pustit.

{ se dělá přes ALTGR + B
} se dělá přes ALTGR + N
= se dělá hned druhým tlačítkem doleva od backspace (tj. klávesa pro mazání textu)

Stáhnout

Pro programátory v jazyce Java tu je kód, kterým jím vše vysvětlí.
[code=java file=ChatUtility.java]public class ChatUtility extends JavaPlugin {
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(new OnPlayerCommandPreprocess(), this);
}
}
[/code]
[code=java file=OnPlayerCommandPreprocess.java]public class OnPlayerCommandPreprocess implements Listener {
@EventHandler
public void $(PlayerCommandPreprocessEvent event) {
String message = event.getMessage();
if (message.contains("{UUID=")) {
try {
Pattern p = Pattern.compile("\\{UUID=(\\S+)\\}");
Matcher m = p.matcher(message);
while (m.find()) {
String targetName = m.group(1);
Player target = null;
OfflinePlayer offTarget = null;
if ((target = Bukkit.getPlayer(targetName)) != null) {
message = message.replaceAll("\\{UUID=" + targetName + "\\}", target.getUniqueId().toString());
} else if ((offTarget = Bukkit.getOfflinePlayer(targetName)) != null) {
message = message.replaceAll("\\{UUID=" + targetName + "\\}", offTarget.getUniqueId().toString());
} else {
event.getPlayer().sendMessage("UUID for \"" + targetName + "\" not found.");
event.setCancelled(true);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
event.setMessage(message);
}
}[/code]
Naposledy upravil(a) siOnzee dne 14 črc 2014, 21:31, celkem upraveno 10 x.

OneTime97
Příspěvky: 1552
Věk: 18
Registrován: 03 kvě 2014, 12:20
Reputation: 1
Kontaktovat uživatele:

Re: [Plugin] ChatUtility

#2 Příspěvekod OneTime97 » 14 črc 2014, 19:29

No, dost chytré, a dobré, čekal sem kdy toto někdo udělá, čekal sem mysterii, nebo někoho podobného, ale fakt super! Každopádně hodně užitečný návod. Karma :-)
Každodenní stream od 19:00
https://www.twitch.tv/thief97
Sledujte mě na FB
https://www.twitch.tv/thief97

Uživatelský avatar
Pgsa
Příspěvky: 225
Registrován: 31 led 2013, 15:16
Reputation: 0

Re: [Plugin] ChatUtility [Hlavně UUID]

#3 Příspěvekod Pgsa » 19 črc 2014, 02:20

Mám otázku v prípade že plugin bude ťahať z nicku nijako to neovplyvní?
Obrázek
Obrázek

Uživatelský avatar
siOnzee
Příspěvky: 810
Věk: 22
Registrován: 30 lis 2011, 21:40
Reputation: 5
Bydliště: siOnzee.cz
Kontaktovat uživatele:

Re: [Plugin] ChatUtility [Hlavně UUID]

#4 Příspěvekod siOnzee » 19 črc 2014, 12:39

V případě že je hráč Online: Systém to bere rovnou z jeho třídy, a je to okamžité.
V případě že je hráč Offline: UUID musí být vygenerováno, a proto je možná malinka odezva.
V případě že nastane chyba: Příkaz se neodešle (zruší se) a napíše vám to
"UUID for "jméno" not found.


Tak teď nevím co máš konkrétně namysli, buď víc specifickej :)

Uživatelský avatar
Limeth
Příspěvky: 90
Registrován: 20 úno 2012, 23:15
Reputation: 1

Re: [Plugin] ChatUtility [Hlavně UUID]

#5 Příspěvekod Limeth » 27 led 2015, 16:04

Podotknul bych, že by se hodilo nahradit
[code=java file=Před]@EventHandler[/code]
za
[code=java file=Před]@EventHandler(priority = EventPriority.LOWEST)[/code]
aby se ta metoda pustila nejdříve. Taky je zbytečné volat Pattern.compile při každé zprávě.
Buď jeden z prvních, kdo přidá svůj server na nový seznam ListCraft.cz!

Obrázek
Vyzkoušej si server nyní; IP: bp.projectsurvive.cz


Zpět na „Návody“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti