-
Notifications
You must be signed in to change notification settings - Fork 1
Compatibility
Compatibility has three different meanings: compile compatibility, protocol code paths, and verified runtime behavior. They should not be confused.
VGui compiles with --release 25 and requires Java 25 or newer at runtime.
The Maven Enforcer plugin rejects older Java and Maven environments. The GitHub build workflow uses Temurin 25.
The project compiles against Velocity 4.0.0. Velocity 4 requires the Java 25 toolchain, so this baseline no longer runs on Java 21. The exact API version is centralized in pom.xml.
Compile success against Velocity does not prove every proxy build behaves identically. Test the exact Velocity release used in production.
The exact stable PacketEvents dependency is centralized in pom.xml and updated
through Dependabot. The release jar shades the API, Velocity adapter, and common
runtime modules, but excludes Netty and PacketEvents' own Velocity descriptor.
PacketEvents updates can change wrappers, registries, components, and protocol behavior. A successful build is the first check, not the last.
The implementation contains protocol mapping paths for clients from 1.8 through current versions. In particular, it resolves container types by client version and writes modern item components plus legacy NBT.
That statement describes source paths. It is not a claim that every client, backend, and proxy combination has been live-tested.
VGui does not require a matching plugin on backend servers. It observes backend window and inventory packets at the proxy.
Backend software can still affect packet order, inventory updates, server switching, and window ownership. Validate Paper, Folia, modded, or custom backends separately when they differ from the tested setup.
- Old clients ignore modern-only item components.
- Custom model data only works on clients that support it.
- Profile and skull representation differs across protocol eras.
- Modern window state ids do not exist on old protocols.
- Anvil rename behavior and menu identifiers vary by client version.
- Entity-attached sound packets may behave differently across protocol translations.
| Combination | Status |
|---|---|
| Java 25 and Velocity 4.0.0 | Build target |
| Standalone VGui with internally managed PacketEvents | Supported design |
| Standalone VGui beside a separately loaded PacketEvents plugin | Integration-dependent; class-loader and listener behavior require live validation |
| Relocated shaded VGui with explicit bootstrap | Supported design, integration-owned testing required |
| Unrelocated standalone and shaded copies together | Unsupported due to singleton and class collision risk |
| Transaction pass-through without custom inventory logic | Unsafe and unsupported as a complete inventory solution |
For a release affecting packet logic, check at minimum:
- oldest claimed client protocol;
- newest claimed client protocol;
- current Velocity target;
- the deployed PacketEvents version;
- normal backend connection;
- backend server switch while a view is open;
- client close and plugin close;
- shift, number-key, offhand, drop, outside, double, and drag clicks;
- player inventory preservation during full refresh;
- anvil typing, confirm, and cancel.
Record the actual combinations tested in release notes. Do not turn compile coverage into a runtime claim.
- View Types and Builders
- Layouts and Slots
- Items and Skulls
- Click Handling
- Contents and Updates
- Context and State
- Navigation
- Pagination
- Anvil Input
- Lifecycle and Listeners
- API Reference