Sprawdzanie wersji gracza (Skrypt/Plugin)

szymhal | 2018-12-14 22:18:37 UTC | #1

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 [b]/wersja[/b] 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 | 2017-02-07 13:22:22 UTC | #2

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/Protocolversionnumbers


szymhal | 2017-02-07 13:39:14 UTC | #3

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


DBanaszewski | 2017-02-07 15:58:47 UTC | #4

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


szymhal | 2017-02-07 16:00:04 UTC | #5

@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 | 2017-02-07 16:20:17 UTC | #6

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 | 2017-02-07 16:28:52 UTC | #7

Zrobię i dam na Githuba ;)


DBanaszewski | 2017-02-07 17:15:14 UTC | #8

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 | 2017-02-07 17:16:24 UTC | #9

Tak, na wszystkie. (1.7 - 1.11)


DBanaszewski | 2017-02-07 17:17:08 UTC | #10

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


DBanaszewski | 2017-02-07 17:19:50 UTC | #11

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


szymhal | 2017-02-07 17:21:18 UTC | #12

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


DBanaszewski | 2017-02-07 17:40:18 UTC | #13

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 :smiley:)


DBanaszewski | 2017-02-07 18:20:07 UTC | #14

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 | 2017-02-07 21:31:07 UTC | #15

@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 | 2017-02-07 21:59:06 UTC | #16

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 | 2017-05-27 06:24:38 UTC | #17

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 | 2017-02-08 12:34:25 UTC | #18

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 | 2017-02-08 12:40:56 UTC | #19

[quote=”piratjsk, post:6, topic:1846”]
command /wersja:
trigger:
send “Twoja wersja: %player’s version%”
[/quote]

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 | 2017-05-27 06:24:38 UTC | #20

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%"