ProtoWeaver
🟡 Updated this yearPreview

🔍 Analysis
- 👍 0.4% endorsement rate
- 🏆 #51 of 99 fabric mods in this game by downloads
📋 About This Mod
[!(https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity) [!(https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[!(https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/G2G4DZF4D)
![]()
# ProtoWeaver A minecraft networking library for creating custom protocols that run on the internal netty server.
#### What dis mean? Sick and tired of hyjacking client connections to send data to and from a proxy? Well I sure was. ProtoWeaver allows you to create a custom protocol that runs on the same port that the minecraft server uses. This means a proxy such as velocity is able to communicate with the server regardless if players are on online or not, without running an extra socket server on a different port. Protoweaver is also not just limited to proxies. Using the `client` module, any 3rd party java application can talk directly with ProtoWeaver!
Protoweaver is fast, secure, and easy to use. All protocols run under the same netty instance used by minecraft, are encypted with ssl, and are wrapped in a very straight forward api. Lets take a look:
### Features - Zero user config required - SSL encrytion - Protocol authentication - Packets as POJO's - Compression (Gzip, Snappy, LZ) - All major mod loaders (neoforge soon tm) - [ ] API for registering raw protocols (http, ssh, etc) - Custom serialization - [ ] Custom SSL providers/certs - [ ] Muti-protocol connections - [ ] Tell me what you want to see!
### Project Setup In your build.gradle include
Note: Do not shade protoweaver! It will not work properly. ProtoWeaver is a mod/plugin that is installed along side yours!* ``` gradle repositories { maven { url "https://maven.mrnavastar.me/releases" } }
dependencies { // 'common' can be replaced with any of: `client`, `fabric`, `forge`, `paper` or `proxy`. implementation "me.mrnavastar.protoweaver:common:1. 3. 11" } ```
### Creating a Protocol Protocols are very customizable with a lot of built in functionality. Here is an example protocol: ```java Protocol protocol = Protocol.create("my_mod_id", "cool_protocol") .setCompression(CompressionType. GZIP) .setServerHandler(MyCustomServerHandler.class) .setClientHandler(MyCustomClientHandler.class) .setMaxConnections(15) .addPacket(String.class) .build();
// Load the protocol before it can be used ProtoWeaver.load(protocol); ```
### Sending packets Sending packets is extremely simple. Any POJO that has been added to the protocol (See (#creating-a-protocol)) is a valid packet that can be sent. Note that all POJO serialization is handled through (https://github.com/EsotericSoftware/kryo), a fast and fast serialization library. ```java // If you have a reference to a 'ProtoConnection', you can simply: connection.send(myObject); // If you have a reference to a 'ProtoClient', you can also: client.send(myObject); ```
### Handling packets All protocols need handlers in order to implement functionality. The client and server can either use the same handler, or both use different ones. ```java public class MyCustomServerHandler implements ProtoConnectionHandler { // Note that all functions are optional to implement
@Override public void void onReady(ProtoConnection connection) { System.out.println("awesome! looks like a new client has connected from: " + connection.getRemoteAddress()); }
@Override public void onDisconnect(ProtoConnection connection) { System.out.println("goodbye: " + connection.getRemoteAddress()); }
@Override public void handlePacket(ProtoConnection connection, Object packet) { System.out.println("wow! got: " + packet.toString() + " from: " + connection.getRemoteAddress()); } } ```
```java public class MyCustomClientHandler implements ProtoConnectionHandler { // Note that all functions are optional to implement
@Override public void void onReady(ProtoConnection connection) { System.out.println("awesome! connected to: " + connection.getRemoteAddress()); }
@Override public void onDisconnect(ProtoConnection connection) { System.out.println("goodbye: " + connection.getRemoteAddress()); }
@Override public void handlePacket(ProtoConnection connection, Object packet) { System.out.println("saying hi!"); connection.send("Hey server!"); } } ```
### Custom Serialization Sometimes it can be useful to send minecraft objects or other premade POJO's in your protocol. To allow this, you can register a custom serializer.
For example, here is a serializer for NBT tags:
```java
public class NbtSerializer extends ProtoSerializer
📊 Mod Details
- Game
- Minecraft Plugins
- Author
- mrnavastar
- Version
- 1.5.1
- Downloads
- 6,332
- Endorsements
- 26
- Category
- fabric
- Created
- 5/28/2024
- Updated
- 4/1/2026
- Game Versions
- 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4
- Tags
- library, management, utility
🔧 How to Install Minecraft Plugins Mods
Download from Modrinth. Use Prism Launcher or drop into your mods folder.
📖 Full step-by-step install guide for Minecraft Plugins →
Visit the official mod page for specific installation instructions for this mod.
🎮 Need cheat codes or console commands? Check ur gaming wiki for Minecraft Plugins commands, item IDs, and more.
❓ Frequently Asked Questions
Which Minecraft Plugins versions does ProtoWeaver support?
The author lists 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15. Other versions may work but are untested by the author.
What is the latest version of ProtoWeaver?
Version 1.5.1, published 2026-04-01 with 6,332 downloads recorded at the source.
Keep browsing — more Minecraft Plugins mods await