protocollib плагин что делает
Плагин ProtocolLib | Вспомогательная библиотека для сервере Minecraft
- Опубликовано 08-06-2021, 17:36 Категория Плагины / 1.17 / 1.16 / 1.15 / 1.14 / 1.13 / 1.12 / 1.11 / 1.10 / 1.9 / 1.8 Просмотров 2 314
Описание плагина:
Основные команды:
Пример конфига:
auto updater.notify: true #Информировать любого игрока с protocol.info разрешение при появлении новой версии ProtocolLib выходит.
auto updater.download: false #Автоматически загружать и устанавливать новейшую версию ProtocolLib. Установка вступит в силу после перезапуска сервера.
auto updater.delay: 43200 #Количество секунд между каждой проверкой нового обновления.
auto updater.last: 0 #Это просто записывает последний раз (в секундах с 01.01.1970) была выполнена проверка обновления. Установите его в 0 в силу новая проверка обновлений.
metrics: true #Если TRUE, ProtocolLib опубликует анонимные данные об использовании в mcstats.org. Установите значение FALSE, чтобы отказаться.
background compiler: true #Если TRUE, ProtocolLib попытается улучшить производительность, заменив отражение скомпилированным кодом на лету.
ignore version check: None #Принудительно запустить ProtocolLib для указанной версии Minecraft, даже если она несовместима.
Установка:
2. Возьмите скачанный файл и перенесите в папку plugins вашего сервера.
Bukkit
Bukkit Plugins
ProtocolLib
Table of Contents
ProtocolLib
ProtocolLib has, for the most part, moved over to Spigot! If you need support, head over there!
Certain tasks are impossible to perform with the standard Bukkit API, and may require working with and even modify Minecraft directly. A common technique is to modify incoming and outgoing packets, or inject custom packets into the stream. This is quite cumbersome to do, however, and most implementations will break as soon as a new version of Minecraft has been released, mostly due to obfuscation.
Critically, different plugins that use this approach may hook into the same classes, with unpredictable outcomes. More than often this causes plugins to crash, but it may also lead to more subtle bugs.
Links
Development builds of ProtocolLib can be found here: https://ci.dmulloy2.net/job/ProtocolLib/
These builds have not been approved by the BukkitDev staff. Use them at your own risk.
Support
Please create a issue with as much information as possible if you experience a problem that has not already been reported. Comments with a huge stack trace will be deleted.
If you need help with the API, please use the issue tracker. If your question cannot be made public for whatever reason (including security bugs), send me a personal message instead.
For server operators
Just download ProtocolLib from the link above. It doesn’t do anything on its own, it simply allows other plugins to function.
The reason for these exceptions is because ProtocolLib is not using the packet format as described on the Wiki, it’s using the in-memory representation of these packets. Often, the in-memory representation will use integers instead of shorts and bytes, and store more complex objects (like ItemStacks) directly.
You can figure out the in-memory representation from the Minecraft source code, or just use PacketWrapper where I’ve done all that work for you.
Examples
Source code for a bunch of example programs that use ProtocolLib can be found at this thread on the main support forum.
You may also be interested in PacketWrapper, a library that makes it possible to modify a packet without having to decompile the Minecraft source code.
Finally, for the more advanced users who want to use ProtocolLib if present, but still fall back on their own packet listening system, I recommend taking a look at this thread. I explain where and how to inject code into CraftBukkit in order to intercept sent and received packets yourself.
Maven repository
If you’re using Maven, you’ll be able to automatically download the JAR, JavaDoc and associated sources from the following repository:
You can add it as a dependency like so:
Commands
Protocol
Main administrative command. Supports the following sub-commands:
All of these commands require the permission protocol.admin.
Packet
Add or remove a debug packet listener. This is useful for plugin authors who just wants to see when a packet is sent, and with what content.
Parameters (in order):
For 3.0.0 and above, you should specify the protocol, sender and name instead:
In 3.4.0-SNAPSHOT and above, you can also display the packet before its modified by any packet listeners:
Remove all listeners:
Note that this command should rarely be used on a production server. Listening to too many packets may crash the server.
Filter
This should be much more convenient than having to compile a test plugin and reload the whole server. Note that this feature is disabled by default for security reasons. To enable it, add «debug: true» to config.yml.
Configuration
A small set of configuration options are available:
Global section
For more information, take a look at the default configuration file.
Tutorial for developers
See this page for more information.
Compatibility
One of the main goals of this project was to achieve maximum compatibility with Minecraft. And the end result is quite good, it should be resilient against future changes. It’s likely that I won’t have to update ProtocolLib for anything but bug and performance fixes.
(note that the below list hasn’t been updated in ages and ymmv)
Plugins that appear to be compatible
Plugins known to be compatible
Plugins using ProtocolLib
Inactive projects
Please let me know if you want me to add your plugin to this list. 🙂
Privacy
This plugin uses BStats to generate and publish anonymous aggregate usage statistics, but you can easily opt-out by setting metrics in config.yml to false.
If enabled, the following is sent every ten minutes:
Donating
If ProtocolLib has made your life significantly easier or you’re feeling particularly generous, consider donating! It’s a great way to support the many hours I’ve spent maintaining this plugin and keeps me motivated. Don’t donate if you can’t afford it.
I would like to thank everyone who has donated to ProtocoLib on BukkitDev. I really appreciate it. 🙂
Note: Create an issue if you’re having problems. I generally don’t check the BukkitDev comments.
ProtocolLib
Загрузка
Предыдущие версии
Название | Размер | Обновлено | Версия игры | Загрузок | |
ProtocolLib 4.5.1 release | 1.43 MB | Jun 4, 2020 | 1.15 | 64,151 | |
ProtocolLib 4.4.0 release | 1.41 MB | Sep 22, 2018 | 1.13 | 76,873 | |
ProtocolLib 4.2.1 release | 1.38 MB | Apr 11, 2017 | 1.11 | 162,537 | |
ProtocolLib 4.2.0 release | 1.37 MB | Dec 21, 2016 | 1.11 | 60,560 | |
ProtocolLib 4.1.0 release | 1.37 MB | Sep 18, 2016 | 1.10 | 58,225 | |
ProtocolLib 4.0.2 release | 1.36 MB | Jul 10, 2016 | 1.10 | 54,143 | |
ProtocolLib 4.0.1 release | 1.36 MB | May 22, 2016 | 1.9 | 60,663 | |
ProtocolLib 4.0.0 release | 1.35 MB | May 15, 2016 | 1.9 | 21,118 | |
ProtocolLib 3.6.5 release | 1.42 MB | Feb 17, 2016 | 1.8.1 | 122,152 | |
ProtocolLib 3.6.4 release | 1.38 MB | Jul 12, 2015 | 1.8.3 | 323,329 | |
ProtocolLib 3.4.0 release | 1.25 MB | Jun 15, 2014 | CB 1.7.9-R0.1 | 643,452 | |
ProtocolLib 3.3.1 release | 1.21 MB | Apr 17, 2014 | CB 1.7.2-R0.3 | 115,159 | |
ProtocolLib 3.2.0 release | 1.19 MB | Jan 29, 2014 | 1.7.2 | 177,385 | |
ProtocolLib 3.1.2 release | 1.19 MB | Jan 19, 2014 | 1.7.4 | 21,376 | |
ProtocolLib 3.1.0 release | 1.18 MB | Dec 27, 2013 | 1.7.4 | 26,818 | |
ProtocolLib 3.0.1 release | 1.16 MB | Dec 10, 2013 | 1.7.2 | 29,702 | |
ProtocolLib 2.7.3 release | 1,007.91 KB | Oct 6, 2013 | 1.6.4 | 70,492 | |
ProtocolLib 2.7.0 release | 995.20 KB | Sep 2, 2013 | CB 1.6.2-R0.1 | 51,336 | |
ProtocolLib 2.6.0 release | 983.74 KB | Jul 31, 2013 | 1.6.2 | 46,163 | |
ProtocolLib 2.5.0 release | 946.85 KB | Jul 22, 2013 | 1.6.2 | 12,214 | |
ProtocolLib 2.4.7 release | 877.75 KB | Jul 5, 2013 | 1.6.1 | 17,080 | |
ProtocolLib 2.4.5 release | 878.21 KB | Jun 20, 2013 | CB 1.5.2-R1.0 | 33,159 | |
ProtocolLib 2.4.3 release | 875.46 KB | May 13, 2013 | CB 1.5.2-R0.1 | 46,373 | |
ProtocolLib 2.4.1 release | 854.09 KB | Apr 9, 2013 | CB 1.5.1-R0.1 | 40,649 | |
ProtocolLib 2.3.0 release | 826.33 KB | Mar 5, 2013 | CB 1.4.7-R1.0 | 36,990 | |
ProtocolLib 2.2.0 release | 810.54 KB | Feb 5, 2013 | CB 1.4.7-R1.0 | 30,243 | |
ProtocolLib 2.1.0 release | 746.57 KB | Jan 22, 2013 | CB 1.4.7-R0.1 | 14,630 | |
ProtocolLib 2.0.0 release | 739.63 KB | Jan 10, 2013 | CB 1.4.6-R0.3 | 13,206 | |
ProtocolLib 1.9.0 release | 688.34 KB | Dec 27, 2012 | CB 1.4.6-R0.1 | 11,906 | |
ProtocolLib 1.8.1 release | 660.33 KB | Dec 19, 2012 | CB 1.4.5-R1.0 | 14,709 | |
ProtocolLib 1.8.0 release | 659.33 KB | Dec 10, 2012 | CB 1.4.5-R0.2 | 9,843 | |
ProtocolLib 1.7.1 release | 644.45 KB | Dec 3, 2012 | CB 1.4.5-R0.2 | 5,809 | |
ProtocolLib 1.7.0 release | 644.00 KB | Nov 21, 2012 | CB 1.4.5-R0.2 | 3,979 | |
ProtocolLib 1.6.0 release | 634.08 KB | Nov 13, 2012 | CB 1.4.2-R0.2 | 2,361 | |
ProtocolLib 1.5.1 release | 613.95 KB | Nov 4, 2012 | CB 1.4.2-R0.2 | 3,545 | |
ProtocolLib 1.5.0 release | 568.72 KB | Oct 29, 2012 | 1.4.2 | 1,708 | |
ProtocolLib 1.4.2 release | 557.11 KB | Oct 21, 2012 | CB 1.3.2-R2.0 | 1,391 | |
ProtocolLib 1.4.1 release | 506.25 KB | Oct 17, 2012 | CB 1.3.2-R2.0 | 704 | |
ProtocolLib 1.4.0 release | 506.12 KB | Oct 17, 2012 | CB 1.3.2-R1.0 | 445 | |
ProtocolLib 1.3.2 release | 476.46 KB | Oct 12, 2012 | CB 1.3.2-R1.0 | 557 | |
ProtocolLib 1.3.0 release | 464.03 KB | Oct 5, 2012 | CB 1.3.2-R1.0 | 826 |
Описание
ProtocolLib
ПротоколЛиб, по большей части, перешел на Спигот! Если вам нужна поддержка, идите туда!
Некоторые задачи невозможно выполнить с помощью стандартного API Bukkit, и может потребоваться работать с Minecraft и даже изменять его напрямую. Распространенный метод заключается в изменении входящих и исходящих пакетов или внедрении пользовательских пакетов в поток. Однако это довольно громоздко сделать, и большинство реализаций сломаются, как только будет выпущена новая версия Minecraft, в основном из-за запутывания.
Критически важно, что различные плагины, использующие этот подход, могут подключаться к одним и тем же классам с непредсказуемыми результатами. Чаще всего это приводит к сбою плагинов, но может привести и к более тонким ошибкам.
Связи
Сборки разработки ProtocolLib можно найти здесь: https://ci.dmulloy2.net/job/ProtocolLib/
Эти сборки не были одобрены сотрудниками BukkitDev. Используйте их на свой страх и риск.
Поддержка
Пожалуйста, создайте проблему с как можно большим количеством информации, если вы столкнулись с проблемой, о которой еще не сообщалось. Комментарии с огромной трассировкой стека будут удалены.
Если вам нужна помощь с API, пожалуйста, используйте трекер проблем. Если ваш вопрос не может быть обнародован по какой-либо причине (включая ошибки безопасности), отправьте мне личное сообщение.
Для администраторов серверов
Просто скачайте ProtocolLib по ссылке выше. Он ничего не делает сам по себе, он просто позволяет другим плагинам функционировать.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Причина этих исключений заключается в том, что ProtocolLib не использует формат пакетов, как описано в Wiki, а использует представление этих пакетов в памяти. Часто представление в памяти будет использовать целые числа вместо коротких чисел и байтов и хранить более сложные объекты (например, ItemStacks) непосредственно.
Вы можете выяснить представление в памяти из исходного кода Minecraft или просто использовать PacketWrapper, где я сделал всю эту работу за вас.
Примеры
Исходный код для множества примеров программ, использующих ProtocolLib, можно найти в этой теме на главном форуме поддержки.
Вы также можете быть заинтересованы в PacketWrapper, библиотеке, которая позволяет изменять пакет без необходимости декомпилировать исходный код Minecraft.
Наконец, для более продвинутых пользователей, которые хотят использовать ProtocolLib, если таковой имеется, но все же возвращаются к своей собственной системе прослушивания пакетов, я рекомендую взглянуть на этот поток. Я объясняю, где и как вводить код в CraftBukkit, чтобы самостоятельно перехватывать отправленные и полученные пакеты.
Хранилище Maven
Если вы используете Maven, вы сможете автоматически загрузить JAR, JavaDoc и связанные с ними источники из следующего репозитория:
Вы можете добавить его как зависимость вот так:
Команды
Протокол
Главное административное командование. Поддерживает следующие субкоманды:
Все эти команды требуют разрешения protocol.admin.
Пакет
Добавьте или удалите прослушиватель отладочных пакетов. Это полезно для авторов плагинов, которые просто хотят видеть, когда отправляется пакет и с каким содержимым.
Параметры (по порядку):
Для версии 3.0.0 и выше вместо этого следует указать протокол, отправителя и имя:
В версии 3.4.0-SNAPSHOT и выше вы также можете отобразить пакет до его изменения любыми прослушивателями пакетов:
Удалить всех слушателей:
Обратите внимание, что эта команда редко должна использоваться на рабочем сервере. Прослушивание слишком большого количества пакетов может привести к сбою сервера.
Фильтр
Система фильтров (введенная в 2.4.1) использует встроенный интерпретатор JavaScript в JVM 6 (Rhino) для расширения пакетной команды возможностями фильтрации — теперь можно, скажем, печатать только события пакета метаданных сущностей (packet add server 40) для заданного идентификатора сущности:
Это должно быть гораздо удобнее, чем компилировать тестовый плагин и перезагружать весь сервер. Обратите внимание, что эта функция по умолчанию отключена по соображениям безопасности. Чтобы включить его, добавьте «debug: true» в файл config.yml.
Конфигурация
Имеется небольшой набор конфигурационных опций:
Общий раздел
Для получения дополнительной информации ознакомьтесь с файлом конфигурации по умолчанию.
Учебник для разработчиков
См.Эту страницу для получения дополнительной информации.
Совместимость
Одной из главных целей этого проекта было достижение максимальной совместимости с Minecraft. И конечный результат вполне хорош, он должен быть устойчив к будущим изменениям. Вполне вероятно, что мне не придется обновлять ProtocolLib ни для чего, кроме исправлений ошибок и производительности.
Как это возможно? В конце концов все сводится к размышлениям. По сути, ни одно имя не является жестко закодированным — каждое поле, метод и класс выводятся путем просмотра типов полей, имен пакетов или типов параметров. Он удивительно последователен в разных версиях.
(обратите внимание, что приведенный ниже список не обновлялся в течение веков и ymmv)
Плагины, которые кажутся совместимыми
Плагины, которые, как известно, совместимы
Плагины, использующие ProtocolLib
Неактивные проекты
Пожалуйста, дайте мне знать, если вы хотите, чтобы я добавил ваш плагин в этот список. 🙂
Конфиденциальность
Этот плагин использует BStats для создания и публикации анонимной агрегированной статистики использования, но вы можете легко отказаться от нее, установив метрики в config.yml в false.
Если эта функция включена, то каждые десять минут отправляется следующее сообщение:
Пожертвование
Если ПротоколЛиб значительно облегчил вашу жизнь или вы чувствуете себя особенно щедрым, подумайте о пожертвовании! Это отличный способ поддержать многие часы, которые я потратил на поддержание этого плагина, и поддерживает мою мотивацию. Не жертвуйте, если не можете себе этого позволить.
Я хотел бы поблагодарить всех, кто пожертвовал ПротокоЛиб на БуккитДев. Я действительно ценю это. 🙂
Примечание: Создайте проблему, если у вас возникли проблемы. Обычно я не проверяю комментарии Буккитдева.