ProtocolLib
Biblioteka do przechwytywania wysyłanych i odbieranych pakietów Minecraft.
- Dostępne pliki
- 41
- Obsługiwane wersje
- 20
- Najnowszy plik
- 04.06.2020
ProtocolLib
ProtocolLib w dużej mierze przeniósł się na Spigot! Jeśli potrzebujesz wsparcia, zajrzyj tam!
Niektóre zadania są niemożliwe do wykonania przy użyciu standardowego API Bukkit i mogą wymagać pracy bezpośrednio z Minecraftem, a nawet modyfikacji samej gry. Częstą techniką jest modyfikowanie pakietów przychodzących i wychodzących, lub wstrzykiwanie niestandardowych pakietów do strumienia. To dość uciążliwe, i większość implementacji przestanie działać zaraz po wydaniu nowej wersji Minecraft, głównie z powodu obfuskacji.
Co istotne, różne wtyczki, które używają tego podejścia, mogą ingerować w te same klasy, co prowadzi do nieprzewidywalnych skutków. Często to powoduje awarie wtyczek, ale może też prowadzić do subtelniejszych błędów.
Links
Support
Proszę utworzyć zgłoszenie z jak największą ilością informacji, jeśli napotkasz problem, który nie został jeszcze zgłoszony. Komentarze z dużym śladem stosu będą usunięte.
Jeśli potrzebujesz pomocy z API, proszę użyj panelu zgłoszeń. Jeśli twoje pytanie nie może być publicznie dostępne z jakiegokolwiek powodu (w tym błędy bezpieczeństwa), wyślij mi wiadomość prywatną zamiast tego.
For server operators
Pobierz ProtocolLib z powyższego linku. Sam w sobie nie robi nic, ale umożliwia działanie innym wtyczkom.
FAQ
Najczęściej zadawane pytania
- Dlaczego pojawiają się wyjątki FieldAccessException, gdy próbuję odczytywać lub zapisywać pakiety?
Quote:Powodem tych wyjątków jest to, że ProtocolLib nie używa formatu pakietu opisanego na Wiki, lecz reprezentacji w pamięci tych pakietów. Często reprezentacja w pamięci będzie używać liczb całkowitych zamiast krótkich (short) i bajtów, i będzie bezpośrednio przechowywać bardziej złożone obiekty (jak ItemStacks).
Możesz określić reprezentację w pamięci na podstawie kodu źródłowego Minecrafta, lub po prostu użyć PacketWrapper, gdzie zrobiłem całą tę pracę za Ciebie.
Examples
Kod źródłowy wielu programów przykładowych, które wykorzystują ProtocolLib, można znaleźć w tym wątku na głównym forum wsparcia.
Możesz również być zainteresowany PacketWrapper, biblioteką, która umożliwia modyfikowanie pakietu bez konieczności dekompilowania kodu źródłowego Minecraft.
Na koniec, dla bardziej zaawansowanych użytkowników, którzy chcą używać ProtocolLib, gdy jest dostępny, ale nadal polegać na własnym systemie nasłuchiwania pakietów, polecam zajrzeć do tego wątku. Wyjaśniam, gdzie i jak wstrzykiwać kod do CraftBukkit, aby przechwytywać wysyłane i odbierane pakiety samodzielnie.
Maven repository
Jeśli używasz Maven, będziesz mógł automatycznie pobrać JAR, JavaDoc i powiązane źródła z Maven Central. Możesz dodać go jako zależność w ten sposób:
<dependencies> <dependency> <groupId>net.dmulloy2</groupId> <artifactId>ProtocolLib</artifactId> <version>5.4.0</version> </dependency> <!-- And so on --> </dependencies>
Commands
Protocol
Główne polecenie administracyjne. Obsługuje następujące podpolecenia:
- config: Przeładuj plik konfiguracyjny.
- check: Sprawdź dostępność nowych wersji na BukkitDev.
- update: Sprawdź najnowsze wersje i automatycznie pobierz JAR. Serwer musi zostać zrestartowany, aby to zadziałało.
- timings: Włącz/wyłącz mierzenie ilości czasu CPU poświęcanego każdej wtyczce. Zobacz tutaj po więcej informacji.
- listeners: Wyświetla, które wtyczki używają ProtocolLib i typy pakietów, które przechwytują.
Wszystkie te polecenia wymagają uprawnienia protocol.admin.
Przykład:
/protocol update
Packet
Dodaj lub usuń nasłuchiwacz pakietów debugowania. To przydatne dla autorów wtyczek, którzy chcą po prostu zobaczyć, kiedy pakiet jest wysyłany i co zawiera.
Podpolecenia:
- add: Dodaj nasłuchiwacz pakietów o podanym identyfikatorze pakietu.
- remove: Usuń jeden lub wszystkie nasłuchiwacze pakietów o podanych identyfikatorach pakietów.
- names: Wyświetl nazwę każdego podanego identyfikatora pakietu.
Parametry (w kolejności):
- Strona połączenia: albo client lub server.
- Wiele zakresów identyfikatorów: może to być pojedynczy identyfikator pakietu, na przykład 14, lub zakres 10 - 15. Domyślnie 0 - 255, jeśli nie podano.
- Szczegółowe: jeśli TRUE, wyświetla pełną zawartość pakietu.
Przykład:
/packet add client 10-13 true
Dla wersji 3.0.0 i nowszych, powinieneś określić protokół, nadawcę i nazwę zamiast tego:
/packet add play server chat true
W 3.4.0-SNAPSHOT i nowszych, możesz także wyświetlać pakiet przed jego modyfikacją przez dowolnych nasłuchiwaczy pakietów:
/packet add play server chat compare
Usuń wszystkie nasłuchiwacze:
/packet remove client /packet remove server
Należy pamiętać, że to polecenie rzadko powinno być używane na serwerze produkcyjnym. Nasłuchiwanie zbyt wielu pakietów może spowodować awarię serwera.
Filter
System filtrów (wprowadzony w 2.4.1) używa wbudowanego interpretera JavaScript w JVM 6 (Rhino), aby rozszerzyć możliwość polecenia pakietu o filtrowanie - teraz możliwe jest na przykład, aby wyświetlać tylko zdarzenia metadanych encji (packet add server 40) dla danego identyfikatora encji:
> packet add server 40 true Added listener ListeningWhitelist{priority=MONITOR, packets=[40]} > filter add entity_filter 40 Enter filter program ('}' to complete or CANCEL): function(event, packet) { > return packet.a == 1000; >} Added filter entity_filter.
To powinno być dużo wygodniejsze niż kompilowanie testowej wtyczki i ponowne uruchamianie całego serwera. Należy pamiętać, że ta funkcja jest domyślnie wyłączona ze względów bezpieczeństwa. Aby ją włączyć, dodaj "debug: true" do config.yml.
Konfiguracja
A small set of configuration options are available:
Opis projektu pochodzi z CurseForge i został udostępniony po polsku. Szczegóły konfiguracji, zależności oraz aktualne komunikaty autora sprawdź na w źródłowym katalogu CurseForge.
ProtocolLib.jar 04.06.2020 1 MB
ProtocolLib.jar 22.05.2016 1 MB
ProtocolLib.jar 15.05.2016 1 MB
ProtocolLib.jar 17.02.2016 1 MB
ProtocolLib-3.4.0.jar 15.06.2014 1 MB
ProtocolLib-2.4.3.jar 13.05.2013 875 KB
ProtocolLib-2.4.1.jar 09.04.2013 854 KB
ProtocolLib-2.3.0.jar 05.03.2013 826 KB
ProtocolLib-2.2.0.jar 05.02.2013 811 KB
ProtocolLib-2.1.0.jar 22.01.2013 747 KB
ProtocolLib-2.0.0.jar 10.01.2013 740 KB
ProtocolLib-1.9.0.jar 27.12.2012 688 KB
ProtocolLib-1.8.1.jar 19.12.2012 660 KB
ProtocolLib-1.8.0.jar 10.12.2012 659 KB
ProtocolLib-1.7.1.jar 03.12.2012 644 KB
ProtocolLib-1.7.0.jar 21.11.2012 644 KB
ProtocolLib-1.6.0.jar 13.11.2012 634 KB
ProtocolLib-1.5.1.jar 04.11.2012 614 KB
ProtocolLib-1.5.0.jar 29.10.2012 569 KB
ProtocolLib-1.4.2.jar 21.10.2012 557 KB
ProtocolLib_1.4.1.zip 17.10.2012 506 KB
ProtocolLib_1.4.0.zip 17.10.2012 506 KB
ProtocolLib_1.3.2.zip 12.10.2012 476 KB
ProtocolLib_1.3.0.zip 05.10.2012 464 KB
Jak bezpiecznie sprawdzić ten plugin
Wybierz zgodny plik
Oznaczenia wersji pochodzą z metadanych autora. Dobierz również właściwe oprogramowanie serwera i Javę.
Zachowaj kopię
Przed pierwszym startem skopiuj świat, konfigurację oraz dane pozostałych pluginów.
Przeczytaj log
Po uruchomieniu sprawdź brakujące zależności i pierwszy błąd związany z nazwą pluginu.