Sprawdzanie wersji gracza (Skrypt/Plugin)

Zombie
szymhal
szymhal

Siema, mam w sumie taką rozkminę, jak sprawdzać wersje graczy. Znalazłem taki temat: https://www.spigotmc.org/threads/tutorial-getting-the-players-client-version.134397/ Tylko, że w pisaniu i rozumieniu pluginów jestem zielony, Chciałem zrobić coś takiego: Gracz wpisuje komende /wersja i pokazuje mu jego wersje. Np: Gdy otwiera menu z dostępnymi serwerami, wtedy serwer sprawdza jego wersje i otwiera odpowiednie menu, gdzie sa podane serwery na jego wersje. Myślałem i szukałem tego wszędzie, może i nie do końca. Jak macie jakieś propozycje, to z góry dziękuje za wypowiedzi

luxDev
luxDev Pionier

Najprostszym sposobem zrobsisz to tak:

((CraftPlayer) player).getHandle().playerConnection.networkManager.getVersion();

To zwraca ci wersje, w np. takim formacie 1.8 = 47

Tutaj masz wszystkie wersje protokołów http://wiki.vg/Protocol_version_numbers

szymhal
szymhal

Ale to jako w formie pluginu? Napisałem, że jestem zielony w te klocki...

DBanaszewski
DBanaszewski α-tester v3

Musisz sam zrobić plugin ;) Jak nie umiesz to mogę zrobić :)

szymhal
szymhal

@DBanaszewski jak umiesz i zrobisz to dobrze i jak zobacze czy kod jest czysty i nie ma tam żadnych niedomówień to bardzo proszę i z góry dziękuje.

piratjsk
piratjsk Pionier

Jeśli chcesz to w formie skryptu (dla pluginu Skript) to dodatek TuSKe dodaje wyrażenie:

(mc|minecraft) version of %player%
%player%'[s] (mc|minecraft) version

dzięki czemu można korzystać z warunków typu if player's version is "1.7".

Skrypt na komendę /wersja wyglądałaby np. tak:

command /wersja:
  trigger:
    send "Twoja wersja: %player's version%"
DBanaszewski
DBanaszewski α-tester v3

Zrobię i dam na Githuba ;)

DBanaszewski
DBanaszewski α-tester v3

A jeżeli mogę to plugin ma działać od jakiej wersji (od jakiej wersji musi on sprawdzać wersję [np. od 1.7.2 do 1.11.2]) ?

szymhal
szymhal

Tak, na wszystkie. (1.7 - 1.11)

DBanaszewski
DBanaszewski α-tester v3

Czyli od 1.7.2 do 1.11.2 :) - poniżej 1.7.2 nie zrobię, bo inaczej jest numerowane :/

DBanaszewski
DBanaszewski α-tester v3

Jeszcze jedno pytanko - jaka ma być dokładna komenda na to?

szymhal
szymhal

/wersja Może być też ewentualnie /wersja wtedy pokazuje wersje danego gracza.

DBanaszewski
DBanaszewski α-tester v3

Plugin będzie działał od wersji 1.7.2 do 1.11.2 (i późniejszych) ponieważ zastosowałem pobieranie klasy CraftPlayer dla każdej wersji (trochę linijek kodu 😃)

DBanaszewski
DBanaszewski α-tester v3

Plugin w wersji 1.0 wydany. Github: https://github.com/PLBananek/CVersion Download: https://github.com/PLBananek/CVersion/releases

Wymagania:

  • Java 8
  • ProtocolLib

Błędy proszę zgłaszać na Githubie :)

szymhal
szymhal

@piratjsk Wiesz może dlaczego wywala mi taki błąd w konsoli: http://screenshot.sh/mKPAzaGRQBFQ5 Skoro pobieram wersje stąd: https://www.spigotmc.org/resources/tuske.25136/ I jest ona na wersje 1.7 - 1.10? Serwer jest na wersji 1.8.

DBanaszewski
DBanaszewski α-tester v3

Jakiejś klasy nie może znaleźć. Patrzyłeś mój plugin? Plugin powinienen działać na wersjach od 1.7.2 do obecnej wersji 1.11.2.

szymhal
szymhal

Zacznijmy od tego, iż wole by plugin był na jave 7. W skrypcie mi się wygodniej pracuje, iż tam mozna tworzyć własne argumenty. Dlatego pytam o ten skrypt. Pisze że jest na wersje 1.7 - 1.11 a tu nic, nie działa na 1.8...

piratjsk
piratjsk Pionier

Z jakiej wersji Skript korzystasz? Ten błąd jest spowodowany tym, że dodatek korzysta z metody (Skript.classExists(String className)), która nie istnieje. Według githuba została ona dodana w grudniu 2014 roku, a z tego co widzę to ostatnia wersja Skript na dev.bukkit.org jest z marca 2014. Więc jeśli korzystasz z wersji z bukkit dev to najwyższy czas zastąpić ją jakąś nowszą, np. taką pobraną stąd.

szymhal
szymhal

piratjsk:

command /wersja: trigger: send "Twoja wersja: %player's version%"

Dzięki działa, ale teraz skrypt wywala mi bład: [13:38:07 INFO]: [Skript] Reloading skrypt.sk... [13:38:07 ERROR]: Can't understand this expression: player's version (skrypt.sk, line 3: send "Twoja wersja: %player's version%"') [13:38:07 INFO]: [Skript] Encountered 1 error while reloading skrypt.sk!

piratjsk
piratjsk Pionier

Nom, napisałem to z błędem (ale powyżej podałem dokładną poprawną składnię tego wyrażenia), powinno być:

command /wersja:
  trigger:
    send "Twoja wersja: %player's mc version%"