
Proxy Compatible Forge
This mod brings modern forwarding and useful patches to Neo/Forge servers
Обновлён 25 апреля 2026 г. · опубликован 22 февраля 2023 г.
Proxy Compatible Forge
Special thanks to FabricProxy-Lite and CrossStitch for spearheading in the modded proxy space. We've done our fair share of work porting things and tailoring them to a Neo/Forge environment, but nonetheless we stand on the shoulders of giants.
This mod brings Velocity's modern forwarding to Neo/Forge servers
Supported Versions/Platforms
- Forge versions 1.7.2 - 26.1.2
- MixinBootstrap is required on Forge 1.14 - 1.15.1
- ModernMixins is required on Forge 1.13.x
- MixinBooter is required on Forge 1.8 - 1.12.2
- UniMixins is required on Forge 1.7.x
- 1.7.2 - 1.12.2 also require a modified Velocity proxy
- NeoForge versions 1.20.1 - 26.1.2
- SpongeForge/SpongeNeo
- PCF shouldn't be needed, as Sponge supports legacy+modern forwarding and command argument wrapping
- However, if Forgified Fabric API is installed (specifically
fabric_networking_api_v1), you may need to use PCF and disable Sponge's forwarding
- Bukkit+Neo/Forge Hybrid servers
- Use the Hybrid's built-in forwarding support when possible, otherwise use PCF if their implementation is incompatible
See the Compatibility page for more details on supported platforms and modpacks.
How to Get Started
Note Regarding Forge 1.13 - 1.20.1
If you wish to host modern Forge server (1.13 - 1.20.1) behind a Velocity proxy, check out Ambassador: https://modrinth.com/plugin/ambassador
Note: Version 1.2.0-beta or higher of Ambassador doesn't require this mod anymore, but you can still use it if you want modern forwarding.
Installation
The following assumes you've already configured a Velocity proxy and have a functional setup.
- Download this mod and place it in your Neo/Forge server's
modsfolder (Jars can be found on Modrinth or in the releases tab). - Start the Neo/Forge server to generate the default config file.
- Stop the Neo/Forge server.
- Open
proxy-compatible-forge.tomlin theconfigfolder and put your forwarding secret in theforwarding.secretconfig field. - In
server.propertiesmake sureonline-modeis set tofalse. - You are now ready to start the server and connect to it with Velocity!
Configuration
The config is located under config/proxy-compatible-forge.toml and has the following options:
| Setting Group | Setting Name | Default Value | Description |
|---|---|---|---|
forwarding |
enabled |
true |
Enable or disable player info forwarding. Changing this setting requires a server restart. |
forwarding |
mode |
"MODERN" |
The type of forwarding to use. |
forwarding |
secret |
"" |
The secret used to verify the player's connection is coming from a trusted proxy. PCF will only handle argument wrapping if this setting is blank. |
forwarding |
approvedProxyHosts |
[] |
A list of approved proxy hostnames or IP addresses. If the connecting proxy's hostname or IP isn't in this list, the player will be disconnected. Leave empty to allow all. |
crossStitch |
enabled |
true |
Enable or disable CrossStitch support. Changing this setting requires a server restart. |
crossStitch |
forceWrappedArguments |
[] |
Add any incompatible modded or vanilla command argument types here. |
crossStitch |
forceWrapVanillaArguments |
false |
Force wrap vanilla command argument types. Useful for when the above setting gets a bit excessive. |
debug |
enabled |
false |
Enable or disable debug logging. |
debug |
disabledMixins |
[] |
List of mixins to disable. Use the Mixin's name and prefix it with it's partial or full package name. |
advanced |
modernForwardingVersion |
"NO_OVERRIDE" |
Overrides the modern forwarding version decided by PCF. Change it to "MODERN_DEFAULT" if you encounter chat-signing issues. Changing this setting requires a server restart. |
Features
Player Info Forwarding
As mentioned above, PCF implements Velocity's MODERN forwarding protocol, allowing you to secure modded
servers behind proxies.
Modern Forwarding versions 1-4 are supported:
| Name | Value | Supported MC Versions |
|---|---|---|
MODERN_DEFAULT |
1 | Any |
MODERN_FORWARDING_WITH_KEY |
2 | 1.19 |
MODERN_FORWARDING_WITH_KEY_V2 |
3 | 1.19.1 - 1.19.2 |
MODERN_LAZY_SESSION |
4 | 1.19.3 and above |
If you run into compatibility issues regarding chat signing, report the issue, then change
advanced.modernForwardingVersion to MODERN_DEFAULT in PCF's config.
Modded Command Argument Wrapping, aka CrossStitch
This resolves errors such as:
io.netty.handler.codec.CorruptedFrameException: Error decoding class com.velocitypowered.proxy.protocol.packet.AvailableCommandsPacket
PCF ports this Fabric mod's ability to wrap modded command arguments, allowing them to be sent through Velocity without there needing to be a custom packet deserializer for each and every command argument mods add.
In some rare cases mods will register their command arguments under the minecraft namespace or make modifications to
vanilla arguments, bypassing PCF's argument wrapper. In such cases, you can add the custom argument's ID to PCF's
crossStitch.forceWrappedArguments setting to force PCF to wrap the argument.
In situations where mods inject and register their arguments before Vanilla does, offsetting all the argument ID values,
you can enable the crossStitch.forceWrapVanillaArguments setting to force-wrap the minecraft and brigadier namespaces.
This is more of a band-aid solution as the offset argument IDs cannot be read by Velocity, and if the argument IDs on
the client have the same offset Velocity commands cannot be read by the client, preventing connections entirely unless
you disable all commands on the proxy via permissions or by removing plugins that add commands.
The easiest way to tell if this is happening is to enable PCF's debug logging in the config and check to see if
brigadier:boolean has an argument ID other than 0.
A common fix for this is for the mod in question to move their registration mixin to RETURN, and to ensure that their
argument's registration specifies their modid as the namespace.
If you find any wild args, please open an issue so we can add them to the default config, or so we can use the information provided to write up a PR for the mod causing the issue.
Common Issues
Too Many Channels
Client Error:
Invalid payload REGISTER!
Velocity:
Velocity Fix: Add -Dvelocity.max-known-packs=# to the Velocity's startup arguments,
where # is a number that is 64 + number-of-mods*1.5 (round up).
Eg: For 40 mods, use 64 + 40*1.5 = 124, so -Dvelocity.max-known-packs=124
Paper Server Error:
[00:00:00 ERROR]: Couldn't register custom payload
java.lang.IllegalStateException: Cannot register channel 'modid:channel'. Too many channels registered!
Paper Fix: Add -Dpaper.disableChannelLimit=true to the Paper server's startup arguments
Notes: Due to the amount of channels and mods at play, textures/items may be mismatched on the client when joining a Vanilla server.
An internal server connection error occurred
Client Error:
An internal server connection error occurred.
Velocity Error:
io.netty.handler.codec.CorruptedFrameException: Packet sent for class com.velocitypowered.proxy.protocol.packet.PluginMessagePacket was too big (expected 1234567 bytes, got 7654321 bytes)
Resolved Velocity-side with the by adding -Dvelocity.max-plugin-message-payload-size=####### to Velocity's startup arguments,
where ####### is a bit larger than the last "got ####### bytes" number in the error message. Repeat until your client is able to log in.
Building the Project
Clone the repository.
git clone https://github.com/adde0109/Proxy-Compatible-Forge.gitRun
./gradlew build(gradlew.exe buildon Windows) in the root directory of the projectThe jar will be in
build/libs/
Версии
| Версия | Канал | Игра | Загрузчики | Дата | Скачать |
|---|---|---|---|---|---|
| 1.2.6 | Релиз | 1.21.11, 26.1, 26.1.1, 26.1.2 | forge, neoforge | 25 апреля 2026 г. | .jar (682 КБ) |
| 1.2.5 | Релиз | 1.21.11, 26.1, 26.1.1, 26.1.2 | forge, neoforge | 21 апреля 2026 г. | .jar (678 КБ) |
| 1.2.4 | Релиз | 1.21.11, 26.1, 26.1.1, 26.1.2 | forge, neoforge | 10 апреля 2026 г. | .jar (612 КБ) |
| 1.2.3 | Релиз | 1.21.8, 1.21.9, 1.21.10, 1.21.11 | forge, neoforge | 8 марта 2026 г. | .jar (577 КБ) |
| 1.2.2 | Релиз | 1.21.8, 1.21.9, 1.21.10, 1.21.11 | forge, neoforge | 8 января 2026 г. | .jar (495 КБ) |
| 1.2.1 | Релиз | 1.21.7, 1.21.8, 1.21.9, 1.21.10 | forge, neoforge | 23 октября 2025 г. | .jar (353 КБ) |
| 1.2.0 | Релиз | 1.21.7, 1.21.8, 1.21.9, 1.21.10 | forge, neoforge | 20 октября 2025 г. | .jar (356 КБ) |
| 1.1.7 | Релиз | 1.21.1, 1.21.2, 1.21.3, 1.21.4 | forge, neoforge | 17 октября 2024 г. | .jar (173 КБ) |
| 1.1.6 | Релиз | 1.20.5, 1.20.6, 1.21, 1.21.1 | forge, neoforge | 17 октября 2024 г. | .jar (173 КБ) |
| 1.1.5 | Релиз | 1.20.5, 1.20.6, 1.21, 1.21.1 | forge, neoforge | 30 сентября 2024 г. | .jar (170 КБ) |
| 1.1.4 | Релиз | 1.20, 1.20.1 | forge | 1 сентября 2023 г. | .jar (22 КБ) |
| 1.1.4 | Релиз | 1.19.3, 1.19.4 | forge | 1 сентября 2023 г. | .jar (22 КБ) |
| 1.1.4 | Релиз | 1.19.2 | forge | 1 сентября 2023 г. | .jar (21 КБ) |
| 1.1.4 | Релиз | 1.18.2 | forge | 1 сентября 2023 г. | .jar (21 КБ) |
| 1.1.4 | Релиз | 1.16.5 | forge | 1 сентября 2023 г. | .jar (20 КБ) |
Показаны последние 15 из 22 версий. Все версии — на Modrinth.
Ченджлог
1.2.6Релиз26.1, 26.1.1, 26.1.2 · 25 апреля 2026 г.
1.2.5Релиз26.1, 26.1.1, 26.1.2 · 21 апреля 2026 г.
- Fixed a couple console warnings on 1.7.10 - 1.12.2
- Rewrote cross-version packet handling to use raw Netty encoders/decoders
- No more version-specific adapters
- Simplifies
ConnectionMixins - Neo 1.20.2 and FFAPI fixes are no longer needed, since the packets are now handled earlier
- Shuffled around and simplified initializers
- Fixed stack overflow caused by upstream lib
- Fixed an issue where Connector 1.20.1 wasn't detected properly and would cause a crash
1.2.4Релиз26.1, 26.1.1, 26.1.2 · 10 апреля 2026 г.
- Fix compatibility issue in an upstream library in regard to mixin envs that use a shaded copy of ASM. closes #80
- Added handling for unregistered command args for versions 1.19+
- Fixed legacy (pre-1.13) loading during startup. closes #69
- Added support for Forge 1.13.x and Neo/Forge 26.1.x
- Incl minor update to upstream library to support new FML methods
- Added arg wrapping edge case for
minecraft:test_argumentandminecraft:test_class
1.2.3Релиз1.21.9, 1.21.10, 1.21.11 · 8 марта 2026 г.
- Fixed Arclight early loading issue in an upstream library
- Added new mixin targets to get around Arclight's Overwrite mixins and other hybrids' incompatible patches
- Resolved odd networking bug. closes #71
- Added proper PreLogin event support for most major hybrids
- Resolved SpongeForge API 8/9 LuckPerms incompatibility. closes #20
- Improved UnionFS handling in an upstream library. Thanks @Sleepwalkerx for pointing out the issue. closes #70
- Fixed an issue where runtimes with really old Mixin versions would crash during startup. closes #73
- Tested and documented compatibility with all major hybrids
1.2.2Релиз1.21.9, 1.21.10, 1.21.11 · 8 января 2026 г.
- Reworked modern forwarding implementations to align with Paper's patches. Closes #27
- Inadvertently resolved modern Neo/Forge LuckPerms incompatibility
- Modern forwarding versions 1-4 are now supported (less intrusive chat validation warnings/errors)
- Disconnect the player and display an error in the console if the
forwarding.secretsetting is not set, as opposed to disabling forwarding outright - Cleaned up version-specific entrypoints and mixins
- Backported modern forwarding to 1.7.2-1.12.2 (needs a slightly modified Velocity proxy)
- Added the
forwarding.approvedProxyHostssetting, allowing users to harden their installs by filtering IPs/hostnames - Simplified CrossStich implementation and added some debug logging during startup to dump out registered command arguments
- Updated to support 1.21.11
1.2.1Релиз1.21.8, 1.21.9, 1.21.10 · 23 октября 2025 г.
- Fix 1.14-1.19 CrossStich impl
- Added edge case for Bookshelf on 1.14.4-1.17.1 for their
"minecraft:enum","minecraft:hand","minecraft:loot", and"minecraft:mod"arguments - Added additional debug logging to make diagnosing odd args easier
- bumped TaterLibLite to 0.1.1, resolving version detection issues in hybrid environments
- Closes #53
1.2.0Релиз1.21.8, 1.21.9, 1.21.10 · 20 октября 2025 г.
Fixes:
- FFAPI incompatibility in regard to initial login and CustomQueryPacket handling. Closes #40
- Increased robustness by setting the CustomQueryPacket's transaction ID to a large random number
- Resolved Forge 1.21.6+ modloading issue. Closes #48
- Sponge{Neo/Forge} not being able to load correctly
- Logger crash on Forge+Bukkit hybrid platforms. Closes #43. Closes #46
- Updated ported CrossStitch behavior to be consistent on all versions
- Fixed some Forge command arg serialization while doing so
- Implemented support for 1.21.9 profile properties. Closes #51
- Closes #35
- Config improvements
- Overhauled the config to allow each feature to be disabled
- Added a very simple API on top of that through the PCF class
- Now automatically reloads when saved, allowing on-the-fly changes to most settings
- Renamed from
pcf-common.tomltoproxy-compatible-forge.toml - Added some debug settings to aid in development and narrowing down issues
- Added a config entry to force-wrap all Vanilla args
Resolves the following external issues:
https://github.com/Sinytra/ForgifiedFabricAPI/issues/185 https://github.com/Sinytra/ForgifiedFabricAPI/issues/233 https://github.com/Sinytra/Connector/issues/1736 https://github.com/AllTheMods/All-the-mods-10-Sky/issues/120 https://github.com/AllTheMods/All-the-mods-10-Sky/issues/604
1.1.7Релиз1.21.2, 1.21.3, 1.21.4 · 17 октября 2024 г.
Slight mistake in the new config
Полная история изменений — на Modrinth.
Комментарии
Загружаем…