-
Notifications
You must be signed in to change notification settings - Fork 1
Troubleshooting
Start with the first relevant error in the proxy or build log. Remove credentials, private addresses, and unrelated player data before sharing logs.
Error: VGui is not initialized yet.
Cause: the consumer plugin called the API before VGui installed its service.
Fix:
@Plugin(id = "consumer", dependencies = @Dependency(id = "vgui"))For a shaded integration, call VGuiBootstrap.loadPacketEvents in the constructor and VGuiBootstrap.init during ProxyInitializeEvent.
Check that:
- Java 25 or newer runs the proxy;
- the jar contains
velocity-plugin.json; - the descriptor
mainpoints toVGuiPlatform; - the descriptor version is not an unresolved Maven placeholder;
- only one conflicting VGui copy is present;
- PacketEvents dependencies can load.
Inspect locally:
jar tf vgui.jar
unzip -p vgui.jar velocity-plugin.jsonVGui may log that it cannot open a view because no PacketEvents user exists. The player may not be fully connected, PacketEvents may not be initialized, or another plugin may have created an incompatible API state.
Open the view after the player connection lifecycle is ready. Check PacketEvents initialization logs and remove duplicate copies.
For JitPack:
- add
https://jitpack.ioas a repository; - use
com.github.AgentNoobff:VGUIwithmain-SNAPSHOTor a realvX.Y.Ztag; - ensure the tag build succeeds on JitPack;
- refresh Maven or Gradle snapshot caches when using
main-SNAPSHOT.
Run:
./mvnw --versionThe Java runtime must be 25 or newer. Set JAVA_HOME to a JDK 25 or newer installation, not a JRE.
Velocity 4 and VGui target Java 25. Confirm both JAVA_HOME and ./mvnw --version report JDK 25 or newer; changing only the shell's java command may leave Maven on an older JDK.
The tests require the PacketEvents stub plus test-scoped Netty and Adventure NBT dependencies. Do not remove TestPacketEvents, netty-buffer, or adventure-nbt without replacing the registry test bootstrap.
Check:
- the click is inside the active VGui window id;
- the slot contains a
ViewItemwith a handler; - a global listener is not returning false;
- the click is not inside the cooldown;
- the session was not replaced before dispatch;
- the handler did not throw, as shown in logs.
Item handlers run only for top-inventory slots. Use view-level onClick for the player inventory.
That is expected with default transaction cancellation. The client predicted a move, then VGui restored its authoritative menu state and cleared the cursor.
Use click handlers to implement actions. Do not treat the GUI as a real movable inventory.
Check backend inventory packets, server switching, protocol translation, and PacketEvents version. VGui composes the lower inventory from tracked backend state. Capture the exact packet sequence and client version for a reproducible issue.
Expected. A backend window takes ownership and closes the proxy session with OVERRIDDEN.
History is empty. Causes include opening with openReplacing, closing the earlier session, a backend override, disconnect, or reaching the oldest of the ten retained entries.
Confirm that slots are configured before items, the region character exists in the layout, indexes belong to the top inventory, and the item list is not empty.
onCancel runs for every unconfirmed closure, including SWITCHED. Confirmation sets
an internal marker before closing. If custom code closes or replaces the prompt
without using its confirm item, cancellation is expected.
A separate domain is not required. GitHub Pages is configured for this repository and publishes from the Javadocs workflow. Check the Pages environment and workflow logs if the site is unavailable.
- Build runs on pushes to main, pull requests, and manual dispatch.
- Dependency review runs on pull requests.
- Release runs only for tags beginning with
v.
Check repository Actions permissions, Pages configuration, branch rules, and any environment protection rules.
Include VGui tag or commit, Velocity, Java, PacketEvents, client, and backend versions, deployment model, smallest reproduction, expected result, actual result, and relevant sanitized logs.
- 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