Użytkownik:BartoszKonkol/sandbox/Protokół serwerowy

Z Minecraft Wiki Polska
Przejdź do nawigacji Przejdź do wyszukiwania


Artykuł w budowie!
Trwa budowa strony BartoszKonkol/sandbox/Protokół serwerowy. Jej autor prosi, abyś w miarę możliwości pomógł mu przy jej tworzeniu.


Protokół serwerowy to sposób komunikacji serwera z klientem. Składa się on z wielu pakietów, służących do wymiany konkretnego rodzaju informacji (m.in. ilość graczy znajdujących się na serwerze, informacje o terenie mapy, aktualizacje stanu bloków, ruchy mobów, interakcje z innymi graczami/mobami/przedmiotami/blokami).

Komunikacja[edytuj | edytuj kod]

Aktywny serwer Minecraft oczekuje na połączenie z strony dowolnego gniazda TCP (w tym też klienta gry). Po uzyskaniu połączenia komunikacja odbywa się za pomocą pakietów będących ciągami bajtów. Aby rozpoznać czego dane pakiety dotyczą, posiadają one swoje identyfikatory, którymi są liczby szesnastkowe w zakresie od 0 (0x00) do 127 (0x7F). Dodatkowo, aby stwierdzić jaki typ transmisji aktualnie się odbywa, serwer i klient muszą uzgodnić stan połączenia.

Handshaking (0x00)[edytuj | edytuj kod]

Uzgadnianie stanu połączenia (ang. Handshaking) - to pakiet, który klient wysyła do serwera w celu określenia, czy zamierza uzyskać informacje o stanie serwera, czy też chce się do niego podłączyć w celu rozpoczęcia rozgrywki.

Pakiet ten korzysta z identyfikatora zerowego (0x00) oraz przesyła do serwera infomacie o używanej przez klienta wersji protokołu, adresie i porcie serwera oraz numerze stanu (1 - w celu uzyskania wyłącznie informacji o stanie serwera; 2 - w celu połączenia i zalogowania się na serwer).

Status[edytuj | edytuj kod]

Stan serwera (ang. Status) - jest to grupa pakietów wysyłanych wyłącznie wtedy, gdy w pakiecie uzgadniania stanu połączenia klient zażądał informacji o stanie serwera.

Komunikacja na tym etapie składa się z serii dwóch wzajemnie wysyłanych pakietów:

Request - Response (0x00)[edytuj | edytuj kod]

Klient wysyła do serwera pusty pakiet o zerowym identyfikatorze (0x00). W odpowiedzi (poprzez pakiet wysyłany również z identyfikatorem 0x00) otrzymuje informacje w formacie JSON zawierające takie dane, jak np. nazwę wersji serwera, numer wersji protokołu używanego przez serwer, liczbę graczy znajdujących się na serwerze, opis serwera czy ikonę serwera. Przykładowy dokument JSON:

{
	"version":
	{
		"name":"BungeeCord 1.8",
		"protocol":47
	},
	"players":
	{
		"max":100,
		"online":10
	},
	"description":"Serwer Minecraft!"
}

Ping - Pong (0x01)[edytuj | edytuj kod]

Klient wysyła do serwera pakiet o identyfikatorze 0x01, zawierający czas systemowy klienta liczony w milisekundach. Następnie serwer odpowiada klientowi wysyłając pakiet również z identyfikatorem 0x01, zawierający identyczny numer czasu systemowego, jak ten przesłany przez klienta.

Login[edytuj | edytuj kod]

Logowanie (ang. Login) - jest to zestaw pakietów służących do rozpoczęcia rozgrywki przez gracza na serwerze. Pierwszym etapem, po uzgodnieniu stanu połączenia (jeśli wybrano dołączenie do serwera, a nie uzyskanie informacji o serwerze), jest wysłanie przez klienta do serwera pakietu Login Start. Następnie serwer wysyła do klienta pakiet Encryption Request, którego celem jest ustalenie szyfrowania pakietów podczas dalszej komunikacji. Jeśli serwer przyjmuje wyłącznie graczy którzy zakupili oryginalną wersję gry, to klient rozłączy się jeśli nie będzie w stanie rozszyfrować kluczy połączenia (nastąpi to wówczas, gdy klient nie zaloguje się z konta premium lub jeśli ma włączoną grę przez zbyt długi czas). W przypadku, gdy nastąpi prawidłowa weryfikacja kluczy, klient odeśle do serwera pakiet Encryption Response. Kolejnym krokiem będzie próba weryfikacji klienta po stronie serwera, która w przypadku niepowodzenia spowoduje wyrzucenie gracza z serwera, a w razie powodzenia spowoduje wysłanie do klienta pakietów Login Success oraz Set Compression.

Login Start (0x00)[edytuj | edytuj kod]

Jest to pakiet zaczynający procedurę logowania. Jest wysyłany przez klienta do serwera. Korzysta z zerowego identyfikatora (0x00) i przesyła wyłącznie nazwę.

Encryption Request (0x01)[edytuj | edytuj kod]

Jest to pakiet rozpoczynający szyfrowanie połączenia. Wysyłany jest przez serwer do klienta. Korzysta z identyfikatora 0x01. Przesyła numer ID serwera (przeważnie pusty), dane na temat długości klucza publicznego i sam klucz oraz informacje o długości kodu jednorazowego i ów kod jednorazowy.

Encryption Response (0x01)[edytuj | edytuj kod]

Jest to pakiet wysyłany przez klienta do serwera po udanym odszyfrowaniu klucza. Korzysta z identyfikatora 0x01. Przesyła dane na temat długości wspólnego tajnego kodu, sam wspólny tajny kod oraz rozmiar tokenu weryfikacyjnego i ów token weryfikacyjny.

Login Success (0x02)[edytuj | edytuj kod]

Jest to pakiet potwierdzający pomyślne zalogowanie na serwerze. Jest wysyłany przez serwer do klienta. Korzysta z identyfikatora 0x02. Przesyła UUID gracza oraz jego nick. Po jego dostarczeniu następuje przełączenie stanu połączenia z Login (logowanie) na Play (rozgrywka).

Set Compression (0x03)[edytuj | edytuj kod]

Jest to pakiet przesyłający jedynie dane na temat maksymalnego rozmiaru skompresowanych pakietów używanych przez dany serwer. Wysyłany jest przez serwer do klienta. Korzysta z identyfikatora 0x03.

Stan połączenia[edytuj | edytuj kod]

Stan połączenia (ang. State) - to rodzaj aktualnego typu wymiany informacji w pakietach pomiędzy serwerem a klientem.

Rozróżnia się cztery stany połączenia:

Rozgrywka[edytuj | edytuj kod]

Rozgrywka (ang. Play) - to najbardziej rozbudowany zestaw pakietów. Aktualnie składa się z 77 pakietów serwer → klient oraz 30 pakietów klient → serwer. Służy do wymiany wszelakich informacji pomiędzy serwerem a klientem, dotyczących wszystkich elementów gry.

Serwer → Klient[edytuj | edytuj kod]

Spawn Object (0x00)[edytuj | edytuj kod]

Wywoływane gdy tworzony jest pojazd lub inny obiekt.

Identyfikator pakietu: 0x00 (0)

Przesyła:

  • numer identyfikacyjny danego bytu (Entity ID)
  • numer UUID obiektu (Object UUID)
  • numer identyfikatora obiektu (Type)
  • pozycje bytu (X, Y, Z, Pitch, Yaw)
  • numer określający odmianę obiektu (Data)
  • kierunek i prędkość przemieszczania się bytu (Velocity X, Velocity Y, Velocity Z)

Spawn Experience Orb (0x01)[edytuj | edytuj kod]

Wywoływane gdy tworzone są kule doświadczenia.

Identyfikator pakietu: 0x01 (1)

Przesyła:

  • numer identyfikacyjny danego bytu (Entity ID)
  • pozycje bytu (X, Y, Z)
  • ilość kul doświadczenia w grupie do zebrania (Count)

Spawn Global Entity (0x02)[edytuj | edytuj kod]

Wywoływane gdy w pobliżu (do 512 kratek od) gracza uderzy piorun.

Identyfikator pakietu: 0x02 (2)

Przesyła:

  • numer identyfikacyjny danego bytu (Entity ID)
  • rodzaj zdarzenia (Type) - aktualnie zawsze wynosi 1
  • miejsce uderzenia błyskawicy (X, Y, Z)

Spawn Mob (0x03)[edytuj | edytuj kod]

Wywoływane gdy tworzony jest mob.

Identyfikator pakietu: 0x03 (3)

Przesyła:

  • numer identyfikacyjny danego bytu (Entity ID)
  • numer UUID bytu (Entity UUID)
  • numer identyfikatora moba (Type)
  • pozycje bytu (X, Y, Z, Yaw, Pitch, Head Pitch)
  • kierunek i prędkość przemieszczania się bytu (Velocity X, Velocity Y, Velocity Z)
  • metadane moba (Metadata)

Spawn Painting (0x04)[edytuj | edytuj kod]

Wywoływane gdy tworzony jest obraz.

Identyfikator pakietu: 0x04 (4)

Przesyła:

  • numer identyfikacyjny danego bytu (Entity ID)
  • numer UUID bytu (Entity UUID)
  • tytuł obrazu, o maksymalnej długości trzynastu znaków (Title)
  • współrzędne środka obrazu (Location)
  • numer kierunku zwrotu namalowanej części obrazu (Direction)
    • 0 - południe
    • 1 - zachód
    • 2 - północ
    • 3 - wschód

Spawn Player (0x05)[edytuj | edytuj kod]

Wywoływane gdy inny gracz wchodzi w zakres widzialny przez klienta.

Identyfikator pakietu: 0x05 (5)

Przesyła:

  • numer identyfikacyjny danego gracz (Entity ID)
  • numer UUID gracza (Player UUID)
  • pozycje gracza (X, Y, Z, Yaw, Pitch)
  • metadane gracza (Metadata)

Animation (0x06)[edytuj | edytuj kod]

Wywoływane gdy powinna nastąpić zmiana animacji gracza.

Identyfikator pakietu: 0x06 (6)

Przesyła:

  • numer identyfikacyjny danego gracz (Entity ID)
  • numer rodzaju nowej animacji (Animation)
    • 0 - odchylenie głównego ramienia
    • 1 - otrzymanie obrażeń
    • 2 - wychodzenie z łóżka
    • 3 - odchylenie drugiego ramienia
    • 4 - efekt krytycznego ataku
    • 5 - magiczny efekt krytycznego ataku

Statistics (0x07)[edytuj | edytuj kod]

Wywoływane gdy nastąpi zmiana statystyk.

Identyfikator pakietu: 0x07 (7)

Przesyła:

  • wielkość tablicy (Count)
  • tablicę składającą się, na każdym poziomie, z nazwy statystyki oraz jej wartości (Statistic : Name & Value)

Block Break Animation (0x08)[edytuj | edytuj kod]

Wywoływane gdy następuje wyświetlenie animacji niszczenia bloku.

Identyfikator pakietu: 0x08 (8)

Przesyła:

  • identyfikator bytu niszczenia bloku (Entity ID)
  • współrzędne bloku (Location)
  • stopień zniszczenia (Destroy Stage) - liczba z zakresu od 0 do 9

Update Block Entity (0x09)[edytuj | edytuj kod]

Wywoływane gdy następuje zmiana stanu bytu bloku.

Identyfikator pakietu: 0x09 (9)

Przesyła:

  • współrzędne bloku (Location)
  • numer rodzaju akcji zmiany stanu (Action)
  • opcjonalny tag NBT bytu bloku (NBT Data) - jeśli nie zawiera tagu, przesyła wartość TAG_END(0)

Block Action (0x0A)[edytuj | edytuj kod]

Wywoływane gdy nastąpi:

Identyfikator pakietu: 0x0A (10)

Przesyła:

  • współrzędne bloku (Location)
  • numery charakteryzujące typ akcji (Byte 1, Byte 2)
    • przykładowo, dla akcji skrzyni parametr pierwszy nie jest używany i zawsze wynosi 1, natomiast parametr drugi określa, czy skrzynia ma zostać zamknięta (0), czy otwarta (1)
  • numer identyfikatora bloku (Block Type)

Block Change (0x0B)[edytuj | edytuj kod]

Wywoływane podczas zmiany bloku w obszarze renderowania.

Identyfikator pakietu: 0x0B (11)

Przesyła:

  • współrzędne bloku (Location)
  • nowy identyfikator bloku (Block ID)

Boss Bar (0x0C)[edytuj | edytuj kod]

Wywoływane gdy wyświetlić się ma pasek życia bossa.

Identyfikator pakietu: 0x0C (12)

Przesyła:

  • numer UUID paska (UUID)
  • numer rodzaju akcji paska (Action) - od tego numeru zależą pozostałe przesyłane dane
    • 0 - tworzenie paska
      • tytuł paska (Title)
      • poziom wypełnienia paska (Health) - wartość od 0.0 do 1.0 (wyższy poziom spowoduje stworzenie kolejnego paska wypełnionego w połowie)
      • numer koloru paska (Color) - wartości kolorów można zobaczyć poniżej
      • numer odpowiadający ilości podziałów paska (Division) - wartości podziałów można zobaczyć poniżej
      • numer maski bitowej (Flags) - wartości masek bitowych można zobaczyć poniżej
    • 1 - usuwanie paska
      • nie przesyła żadnych dodatkowych danych
    • 2 - aktualizacja poziomu wypełniania paska
      • poziom wypełnienia paska (Health) - wartość od 0.0 do 1.0 (wyższy poziom spowoduje stworzenie kolejnego paska wypełnionego w połowie)
    • 3 - aktualizacja tytułu paska
      • tytuł paska (Title)
    • 4 - aktualizacja stylu paska
      • numer koloru paska (Color) - wartości kolorów można zobaczyć poniżej
      • numer odpowiadający ilości podziałów paska (Dividers) - wartości podziałów można zobaczyć poniżej
    • 5 - aktualizacja maski bitowej paska
      • numer maski bitowej (Flags) - wartości masek bitowych można zobaczyć poniżej
Wartości kolorów paska
Numer Nazwa Kolor Wygląd
0 Różowy
(Pink)

1 Niebieski
(Blue)

2 Czerwony
(Red)

3 Zielony
(Green)

4 Żółty
(Yellow)

5 Fioletowy
(Purple)

6 Biały
(White)

Wartości podziałów paska
Numer Nazwa Opis
0 SOLID bez podziału
1 SEGMENTED_6 podział na 6 części
2 SEGMENTED_10 podział na 10 części
3 SEGMENTED_12 podział na 12 części
4 SEGMENTED_20 podział na 20 części
Wartości masek bitowych
Numer Nazwa Opis
0 brak efektów
1 DARKEN_SKY przyciemnia niebo (jak podczas walki z Witherem)
2 PLAY_BOSS_MUSIC uruchamia muzykę Smoka Kresu
CREATE_FOG tworzy mgłę dookoła świata
3 wszystkie efekty jednocześnie

Server Difficulty (0x0D)[edytuj | edytuj kod]

Wywoływane gdy w menu gry klienta ma wystąpić zmiana poziomu trudności.

Identyfikator pakietu: 0x0D (13)

Przesyła:

  • numer poziomu trudności (Difficulty)
    • 0 - pokojowy (peaceful)
    • 1 - łatwy (easy)
    • 2 - normalny (normal)
    • 3 - trudny (hard)

Tab-Complete (0x0E)[edytuj | edytuj kod]

Wywoływane jako odpowiedź serwera z automatycznie uzupełnianą resztą treści komendy.
W większości przypadków odpowiada uzupełnieniem nazwy gracza (np. po wpisaniu _j i kliknięciu TAB zostanie uzupełniony tekst do _jeb - jeśli w danym momencie na serwerze znajduje się gracz o takim nick'u), lecz obsługuje też nazwy poleceń i parametry.

Identyfikator pakietu: 0x0E (14)

Przesyła:

  • wielkość tablicy (Count)
  • tablicę składającą się, na każdym poziomie, z pojedynczych, wysyłanych oddzielnie komend (Matches)

Chat Message (0x0F)[edytuj | edytuj kod]

Wywoływane gdy wyświetlić się ma wiadomość na chat'cie.

Identyfikator pakietu: 0x0F (15)

Przesyła:

  • sformatowaną wiadomość o maksymalnej długości 32 767 (2^15-1) bajtów (JSON Data) - sposoby formatowania można zobaczyć poniżej
  • numer miejsca wyświetlenia wiadomości (Position)
    • 0 - zwykła wiadomość wyświetlana w oknie chat'u (chat)
    • 1 - wiadomość systemowa wyświetlana w oknie chat'u (system message)
    • 2 - wiadomość wyświetlana na HUD'zie powyżej pasku zdrowia/pancerza/głodu/powietrza (above hotbar)

Formatowanie wiadomości chat'u[edytuj | edytuj kod]

Wiadomości wyświetlane na chat'cie przesyłane są w formacie JSON, o następującej, przykładowej składni:
(treść poprzedzona znakami // stanowi komentarz i sama w sobie nie istnieje w transmitowanej wiadomości)

{
	
	// pierwszy poziom tekstu
	"text": "Na serwerze pojawił się gracz ",
	
	// lub, korzystając z tłumaczeń dostępnych po stronie klienta
	"translate": "multiplayer.player.joined",

	// dodanie koloru
	// (kolor szary)
	"color": "gray",
	
	// dodanie tego składnika spowoduje dołączenie do pierwszego poziomu tekstu dodatkowych poziomów
	"extra":
	[
		
		// drugi poziom
		{
			
			// dołączanie tekstu drugiego poziomu do tekstu pierwszego poziomu
			"text": "Notch",
			
			// lub, korzystając z selektora (tj. @p, @a, @e, @r)
			// (@p oznacza najbliższego gracza względem osoby, do której wysyłana jest ta wiadomość)
			"selector": "@p",
			
			// dodanie pogrubienia
			"bold": true,
			
			// zdarzenie które ma się wywołać po kliknięciu na tekst drugiego poziomu
			"clickEvent":
			{
				
				// określenie nazwy akcji (tj. open_url, open_file, run_command, suggest_command)
				"action": "open_url",
				
				// parametr akcji
				// (zdefiniowanie adresu McWikiPL jako uruchamiającego się po kliknięciu na tekst drugiego poziomu)
				"value": "http://mcwiki.pl/"
				
			}
			
		},
		
		// trzeci poziom
		{
			
			// dołączanie tekstu trzeciego poziomu do tekstu pierwszego i drugiego poziomu
			"text": "!",
			
			// usunięcie pogrubienia dziedziczonego po drugim poziomie
			"bold": false,

			// dodanie koloru
			// (kolor czerwony)
			"color": "red"
			
		}
		
	]
	
}

Powyższa treść wyświetli na chat'cie przykładowo:
Na serwerze pojawił się gracz Notch!

Klient → Serwer[edytuj | edytuj kod]

Identyfikator bytów[edytuj | edytuj kod]

Identyfikator bytów - to numer odnoszący się w pakietach protokołu rozgrywki do mobów i obiektów.

Identyfikator mobów[edytuj | edytuj kod]

Identyfikator mobów - to numer określający danego moba, zgodnie z następującą listą:

Identyfikator Mob
48 niezdefiniowany mob
49 niezdefiniowany mob agresywny
50
51
52
53
Gigant
54
55
56
57
Plik:ZombiePigmanFace.png
58
59
60
61
62
63
Smok Kresu
64
Wither
65
66
67
68
69
Shulker
90
91
92
93
94
95
96
97
98
99
100
Koń
101
Królik Królik zabójca
102
120

Identyfikator obiektów[edytuj | edytuj kod]

Identyfikator obiektów - to numer określający dany obiekt, zgodnie z następującą listą:

Identyfikator Obiekt
1
2 Przedmiot
3 Obszar efektów chmur
10
Plik:Grid Wagonik.png
10.1
Plik:Grid Wagonik ze skrzynią.png
11
10.2
12
10.3
10.4 Wagonik ze spawnerem potworów
10.5
Plik:Grid Wagonik z lejem.png
10.6
50
Plik:Grid TNT.png
51
61
Plik:Grid Strzała.png
62
63
64
65
Plik:Grid Perła Kresu.png
66 Pocisk Withera
67 Pocisk Shulkera
70 Spadające obiekty
71
72
Plik:Grid Oko Kresu.png
73
Plik:Grid Butelka z wodą.png
74
Plik:Grid Jajo smoka.png
75
Plik:Grid Zaklęta butelka.png
76
77
Plik:Grid Smycz.png
78
90
Plik:Grid Wędka.png
91 Strzała z miksturą
92
Widmowa strzała
93
Ognista kula Smoka Kresu

Wersje[edytuj | edytuj kod]

Poniżej znajdują się rozpisane wszystkie wersje nowego protokołu serwerowego wraz z odpowiadającymi im wersjami gry:[1]

World of Color Update Exploration Update The Frostburn Update‎ Combat Update Bountiful Update The Update that Changed the World April Fools
Wersja
protokołu gry
321 17w15a
320 17w14a
319 17w13b
318 17w13a
317 17w06a
Wersja
protokołu gry
316 1.11.2
1.11.1
16w50a
315 1.11
314 1.11-pre1
313 16w44a
16w43a
312 16w42a
311 16w41a
310 16w40a
309 16w39c
308 16w39b
307 16w39a
306 16w38a
305 16w36a
304 16w35a
303 16w33a
302 16w32b
301 16w32a
Wersja
protokołu gry
210 1.10.2
1.10.1
1.10
205 1.10-pre2
204 1.10-pre1
203 16w21b
202 16w21a
201 16w20a
Wersja
protokołu gry
110 1.9.4
1.9.3
1.9.3-pre3
1.9.3-pre2
109 1.9.3-pre1
16w15b
16w15a
16w14a
1.9.2
108 1.9.1
1.9.1-pre3
1.9.1-pre2
107 1.9.1-pre1
1.9
106 1.9-pre4
105 1.9-pre3
104 1.9-pre2
103 1.9-pre1
102 16w07b
101 16w07a
100 16w06a
99 16w05b
98 16w05a
97 16w04a
96 16w03a
95 16w02a
94 15w51b
93 15w51a
92 15w50a
91 15w49b
90 15w49a
89 15w47c
88 15w47b
87 15w47a
86 15w46a
85 15w45a
84 15w44b
83 15w44a
82 15w43c
81 15w43b
80 15w43a
79 15w42a
78 15w41b
77 15w41a
76 15w40b
75 15w40a
74 15w39c
15w39b
15w39a
73 15w38b
72 15w38a
71 15w37a
70 15w36d
69 15w36c
68 15w36b
67 15w36a
66 15w35e
65 15w35d
64 15w35c
63 15w35b
62 15w35a
61 15w34d
60 15w34c
59 15w34b
58 15w34a
57 15w33c
56 15w33b
55 15w33a
54 15w32c
53 15w32b
52 15w32a
51 15w31c
50 15w31b
49 15w31a
Wersja
protokołu gry
47 1.8.9
1.8.8
1.8.8-pre
1.8.7
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.2-pre7
1.8.2-pre6
1.8.2-pre5
1.8.2-pre4
1.8.2-pre3
1.8.2-pre2
1.8.2-pre1
1.8.1
1.8.1-pre5
1.8.1-pre4
1.8.1-pre3
1.8.1-pre2
1.8.1-pre1
1.8
46 1.8-pre3
45 1.8-pre2
44 1.8-pre1
43 14w34d
42 14w34c
41 14w34b
40 14w34a
39 14w33c
38 14w33b
37 14w33a
36 14w32d
35 14w32c
34 14w32b
33 14w32a
32 14w31a
31 14w30c
30 14w30b
14w30a
29 14w29b
14w29a
28 14w28b
27 14w28a
26 14w27b
14w27a
25 14w26c
24 14w26b
23 14w26a
22 14w25b
21 14w25a
20 14w21b
19 14w21a
18 14w20b
14w20a
17 14w19a
16 14w18b
14w18a
15 14w17a
14 14w11b
14w11a
13 14w10c
14w10b
14w10a
12 14w08a
11 14w07a
10 14w06b
14w06a
9 14w05b
14w05a
8 14w04b
7 14w04a
6 14w03b
14w03a
5 14w02c
14w02b
14w02a
Wersja
protokołu gry
5 1.7.10
1.7.10-pre4
1.7.10-pre3
1.7.10-pre2
1.7.10-pre1
1.7.9
1.7.8
1.7.7
1.7.6
1.7.6-pre2
1.7.6-pre1
4 1.7.5
1.7.4
1.7.4-pre
1.7.3-pre
13w49a
13w48b
13w48a
13w47e
13w47d
13w47c
13w47b
13w47a
1.7.2
1.7.2-pre
1.7.1-pre
3 1.7-pre
2 13w43a
1 13w42b
13w42a
0 13w41b
13w41a
Wersja Rok
protokołu gry
108 1.RV-Pre1 2016
48 15w14a 2015

Linki zewnętrzne[edytuj | edytuj kod]

  • wiki.vg - angielskojęzyczna wiki poświęcona wszystkim aspektom protokołów serwerowych.[2]

Przypisy[edytuj | edytuj kod]

  1. zestawienie stworzono w oparciu o zasoby serwera Rhenowar, będącego własnością Polish Games Studio (mc.polishgames.net)
  2. dostęp: 2016-06-22