Copied!
v1.0.0 — based on Velocity dev/3.0.0

Velocity for
modded networks.

Conduit is a performance-focused fork of Velocity built for heavily modded Minecraft servers. Native NeoForge and Forge support, smart compression, and configurable networking — no plugins, no reflection hacks.

Requires Java 21+ — changelog

conduit.toml
# the one change that unblocks modded clients [modded] max-known-packs = 64 ← vanilla cap max-known-packs = 1024 ← Conduit default # that's it. everything else is opt-in.
1,024 known-packs limit
50–400ms saved per reconnect
0 plugins required
Java 21+ minimum runtime
1 024 default known-packs limit ← 64 in vanilla Velocity
0 plugins required
GPL-3.0 open source
100% Velocity API compatible

Built for mods.
Not a patch on top.

📦
Configurable Known-Packs Limit

Vanilla Velocity caps clients at 64 known data-packs, instantly disconnecting most modded clients. Conduit raises this to 1 024 by default — fully configurable in conduit.toml. No reflection, no sun.misc.Unsafe, no plugins required.

replaces KnownPacksFix
1024 vs 64 vanilla
Vanilla
64
Conduit
1,024
Modded Handshake Cache

Caches the negotiated pack-list per (IP, mod fingerprint) pair. Re-connecting modded clients replay the cached handshake instead of renegotiating, cutting join time by 50–400 ms on every re-connect.

configurable TTL
400ms saved per join
🧠
Smart Compression

Samples packet entropy before calling DEFLATE. Skips compressing NeoForge binary payloads that are already compressed — no wasted CPU on data that won't shrink.

🔧
Configurable Netty Watermarks

Write-buffer high/low watermarks are set in conduit.toml. SO_BACKLOG raised to 1 024 for burst-login tolerance on large networks.

🛡
Per-IP Connection Throttle

Drops TCP connections at the Netty accept stage — before any data is read — from IPs exceeding a configurable rate. Protects against bot floods that bypass Velocity's existing login ratelimit.

🔀
Packet Queue Manager

Holds in-flight packets during server transitions so stale play-state data from the old server never reaches the client mid-switch. Prevents protocol state-machine confusion on modded clients.

🔍
NeoForge / FML3 Utilities

Channel detection, oversized-payload guarding (4 MiB cap), FML1 address-marker stripping, and REGISTER payload decoding — all built into the pipeline, not bolted on.

📊
Structured Diagnostics

Lock-free LongAdder counters for connections, cache hits, slow logins, throttle drops, and compression skips. Zero overhead when disabled. Enable with one line in conduit.toml.

opt-in

Clone, build, run.
That's it.

01
Clone and build
The setup script clones upstream Velocity, applies Conduit's overlays and additions, then exits. Run the Gradle build to get your JAR.
git clone https://github.com/koelss/conduit.git cd conduit ./scripts/setup.sh ./gradlew build
02
Deploy like normal Velocity
The output JAR is a drop-in replacement for velocity.jar. All your existing plugins and velocity.toml settings continue to work unchanged.
03
Configure conduit.toml
On first run, conduit.toml is generated next to velocity.toml. Set your known-packs limit, handshake cache TTL, and compression preferences.
04
Remove KnownPacksFix (if installed)
If you were using the KnownPacksFix plugin, remove it from plugins/. Set max-known-packs in conduit.toml to match your old pack-limit value. The -Dvelocity.max-known-packs JVM flag is still honoured.
conduit.toml
# conduit.toml — generated on first run next to velocity.toml

[modded]
max-known-packs          = 1024     # raise for large modpacks; vanilla cap is 64
handshake-cache          = true
handshake-cache-ttl      = 300      # seconds
handshake-timeout-ms     = 30000
neoforge-compat          = true
legacy-forge-compat      = true
announce-modded-in-ping  = false
log-mod-handshakes       = false

[network]
write-buffer-high-watermark        = 2097152   # 2 MiB
write-buffer-low-watermark         = 1048576   # 1 MiB
smart-compression                  = true
smart-compression-min-delta        = 64        # minimum bytes saved to justify compressing
packet-queue-optimization          = true
packet-queue-max-depth             = 256
connection-throttle                = true
connection-throttle-max-per-second = 30

[diagnostics]
enabled                      = false
trace-mod-handshakes         = false    # very verbose — debug only
slow-connection-threshold-ms = 3000

[server]
health-check-enabled            = true
health-check-interval-ms        = 10000
fallback-servers                = []        # ordered list of preferred fallback server names
motd-cache-enabled              = true
motd-cache-ttl-ms               = 2000
graceful-shutdown-enabled       = true
graceful-shutdown-timeout-ms    = 5000
graceful-shutdown-message       = "Proxy is restarting. Please reconnect in a moment."
bot-filter-enabled              = true
bot-filter-timeout-ms           = 3000
bot-filter-threshold            = 10

Works with everything
Velocity works with.

⚙️
Velocity Plugins
fully compatible
📄
velocity.toml
unchanged
🗒️
Paper / Spigot
full support
🧵
Fabric
full support
🔨
NeoForge (FML3)
improved
⚒️
Legacy Forge (FML1/2)
improved