Protocollib Plugin

ProtocolLib Plugin (1.19.4, 1.19.2) lets you read and write packets in the Minecraft protocol. It makes reflection and channel injection easier and gives wrappers to change packets more simply. It usually updates with most Minecraft updates so other plugins don’t have to. ProtocolLib often works fine for minor updates, especially if the code doesn’t change much (like the 1.8 security updates)

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.

ProtocolLib Plugin (1.19.4, 1.19.2) – Bukkit, Spigot, Paper 1

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.

Commands

Protocol

Main administrative command. Supports the following sub-commands:

  • config: Reload the configuration file.
  • check: Check for new versions on BukkitDev.
  • update: Check for new versions and automatically download the JAR. The server must be restarted for this to take effect.
  • timings: Toggle measuring the amount of CPU time spent by each plugin. See here for more information.
  • listeners: Display what plugins are using ProtocolLib, and the packet types they are intercepting.

All of these commands require the permission protocol.admin.

Example:

/protocol update

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.

Sub commands:

  • add: Add a packet listener with a given packet ID.
  • remove: Remove one or every packet listener with the given packet IDs.
  • names: Print the name of every given packet ID.

Parameters (in order):

  • Connection side: Either client or server.
  • Multiple ID ranges: Can be a single packet ID like 14, or a range like 10 – 15. Defaults to 0 – 255 if not specified.
  • Detailed: If TRUE, prints the full packet content.

Example:

/packet add client 10-13 true

For 3.0.0 and above, you should specify the protocol, sender and name instead:

/packet add play server chat true

In 3.4.0-SNAPSHOT and above, you can also display the packet before its modified by any packet listeners:

/packet add play server chat compare

Remove all listeners:

/packet remove client /packet remove server

Note that this command should rarely be used on a production server. Listening to too many packets may crash the server.

Filter

The filter system (introduced in 2.4.1) uses the built-in JavaScript interpreter in JVM 6 (Rhino) to extend the packet command with filtering capabilities – it is now possible to, say, only print entity metadata packet events (packet add server 40) for a given entity ID:

> 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.

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

Option Default Description
auto updater.notify true Inform any player with the permission protocol.info when a new version of ProtocolLib is out.
auto updater.download true Automatically download and install the newest version of ProtocolLib. The installation will take effect when the server restarts.
auto updater.delay 43200 The number of seconds between each check for a new update.
auto updater.last 0 This simply records the last time (in seconds since 01.01.1970) an update check was performed. Set it to 0 to force a new update check.
metrics true If TRUE, ProtocolLib will publish anonymous usage data to mcstats.org. Set it to FALSE to opt-out.
background compiler true If TRUE, ProtocolLib will try and improve performance by replacing reflection with compiled code on-the-fly.
ignore version check None Force ProtocolLib to start for a specified Minecraft version, even if it is incompatible.

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.

How is this possible? It all comes down to reflection in the end. Essentially, no name is hard coded – every field, method, and class is deduced by looking at field types, package names, or parameter types. It’s remarkably consistent across different versions.

Plugins that appear to be compatible

  • NoLagg
  • NoCheatPlus

Plugins known to be compatible

  • SpoutPlugin

Plugins using ProtocolLib

  • Orebfuscator
  • TagAPI
  • DisguiseCraft
  • VanishNoPacket (v3.18.5 and earlier)
  • BkCommonLib
  • CraftBook
  • ChairsReloaded (3.0.2 and earlier)
  • Scavenger
  • TabAPI
  • Individual-Signs
  • ItemRenamer
  • RandomCoords
  • AntiCommandTab
  • Sneaky
  • Spy
  • Statues
  • Seasons
  • Safe Command Block
  • PlayerHider
  • Phantasma Chat Filter
  • Ghost Hunt
  • ReMap
  • AttributeHider
  • uCars
  • uPlanes
  • PropHunt
  • Portable-Horses
  • ClickEdit
  • RageBan
  • ReChat
  • PlayEffect
  • FakePlayers
  • PlayerCountMessage
  • Vampire
  • Murder
  • NoSpy
  • PingNachricht
  • NoCheatPlus
  • ScoreboardStats

Screenshots:
ProtocolLib Plugin (1.19.4, 1.19.2) – Bukkit, Spigot, Paper 2

ProtocolLib Plugin (1.19.4, 1.19.2) – Bukkit, Spigot, Paper 3

ProtocolLib Plugin (1.19.4, 1.19.2) – Bukkit, Spigot, Paper 4

ProtocolLib Plugin (1.19.4, 1.19.2) – Bukkit, Spigot, Paper 5

ProtocolLib Plugin (1.19.4, 1.19.2) – Bukkit, Spigot, Paper 6

How to install:

  • Download a plugin of your choice.
  • Place the .jar and any other files in your plugins directory.
  • Run the server and wait for it to fully load.
  • Type stop in your Minecraft server console to bring the server to a clean stop.
  • Run the server.
  • All done! Your plugin should be installed and ready to be used.

ProtocolLib Plugin (1.19.4, 1.19.2) Download Links

For All Versions from Minecraft 1.12 to Minecraft 1.15

Download from Server 1 – Download from Server 2

For Minecraft 1.18.x

Download from Server 1 – Download from Server 2

For Minecraft from 1.19 to 1.19.2

Download from Server 1 – Download from Server 2

For Minecraft 1.19.3

Download from Server 1 – Download from Server 2

For Minecraft 1.19.4

Download from Server 1 – Download from Server 2

Mods

1.19.4 Mods

1.19.3 Mods

1.19.2 Mods

1.18.2 Mods

1.16.5 Mods

1.15.2 Mods

1.12.2 Mods

1.8.9 Mods

1.7.10 Mods

1.18.1 Mods

1.17.1 Mods

1.14.4 Mods

1.13.2 Mods

1.11.2 Mods

1.10.2 Mods

1.9.4 Mods

Minecraft Modpacks

1.19.4 Modpacks

1.19.3 Modpacks

1.19.2 Modpacks

1.18.2 Modpacks

1.16.5 Modpacks

1.12.2 Modpacks

1.7.10 Modpacks

Forge Mods

Fabric Mods

Quilt Mods

Resource Packs

1.19.4 Resource Packs

1.19.3 Resource Packs

1.19.2 Resource Packs

1.18.2 Resource Packs

1.16.5 Resource Packs

1.15.2 Resource Packs

1.12.2 Resource Packs

1.8.9 Resource Packs

1.7.10 Resource Packs

1.18.1 Resource Packs

1.17.1 Resource Packs

1.14.4 Resource Packs

1.13.2 Resource Packs

1.11.2 Resource Packs

1.10.2 Resource Packs

1.9.4 Resource Packs

Shaders

1.19.4 Shaders

1.19.3 Shaders

1.19.2 Shaders

1.18.2 Shaders

1.17.1 Shaders

1.16.5 Shaders

Maps

1.19.4 Maps

1.19.3 Maps

1.19.2 Maps

1.18.2 Maps

1.16.5 Maps

1.15.2 Maps

1.12.2 Maps

1.8.9 Maps

1.7.10 Maps

1.18.1 Maps

1.17.1 Maps

1.14.4 Maps

1.13.2 Maps

1.11.2 Maps

1.10.2 Maps

1.9.4 Maps

Data Packs

1.19.4 Data Packs

1.19.3 Data Packs

1.19.2 Data Packs

1.18.2 Data Packs

1.16.5 Data Packs

1.15.2 Data Packs

1.18.1 Data Packs

1.17.1 Data Packs

1.14.4 Data Packs

1.13.2 Data Packs

MCPE/Bedrock

Mods & Addons

MCPE 1.19 Add-ons

MCPE 1.19 Mods

Texture Packs

MCPE 1.19 Texture Packs

MCPE 1.19 Resource Packs

Maps

MCPE 1.19 Maps

Clients

MCPE 1.19 Clients

Mod Menu Clients

Shaders

MCPE 1.19 Shaders

Render Dragon Shaders

Launchers

Skin Packs

Clients

1.19.4 Clients

1.19.3 Clients

1.19.2 Clients

1.18.2 Clients

1.16.5 Clients

1.12.2 Clients

1.8.9 Clients

Launchers

1.19.4 Launchers

1.19.3 Launchers

1.19.2 Launchers

1.18.2 Launchers

1.16.5 Launchers

1.12.2 Launchers

1.7.10 Launchers

Seeds

1.19.4 Seeds

1.19.3 Seeds

1.19.2 Seeds

1.18.2 Seeds

Skins

Plugins

Bukkit Plugins

Spigot Plugins

Paper Plugins

Tutorials

Minecraft Skins

Installation Guide

Mobs Wiki Guide

Seeds Wiki Guide

Biomes Wiki Guide

Status Effects Wiki Guide

Enchantments Wiki Guide

Materials Wiki Guide

Command Blocks

Versions

Backlinks