-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
VGui supports a standalone plugin model and a shaded-library model. The standalone model is recommended because one VGui installation can serve multiple Velocity plugins.
Download vgui.jar from the latest release and place it in plugins/ on the Velocity proxy.
This jar is self-contained for VGui's PacketEvents usage: it embeds PacketEvents' API, Velocity adapter, and common runtime modules while relying on Velocity for Netty. A separate PacketEvents plugin is optional rather than required.
The release workflow publishes three stable asset names:
-
vgui.jarfor the runtime plugin -
vgui-sources.jarfor source attachment -
vgui-javadoc.jarfor offline API documentation
The files do not contain a version in their asset name. The plugin descriptor and manifest still record the actual build version.
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.AgentNoobff</groupId>
<artifactId>VGUI</artifactId>
<version>main-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>For a release build, replace main-SNAPSHOT with the tag shown by the latest release, using vX.Y.Z syntax.
provided is correct when vgui.jar supplies the API at runtime. It prevents Maven from embedding VGui into your plugin jar.
repositories {
maven("https://jitpack.io") {
content {
includeGroup("com.github.AgentNoobff")
}
}
}
dependencies {
compileOnly("com.github.AgentNoobff:VGUI:main-SNAPSHOT")
}repositories {
maven {
url = uri('https://jitpack.io')
content {
includeGroup 'com.github.AgentNoobff'
}
}
}
dependencies {
compileOnly 'com.github.AgentNoobff:VGUI:main-SNAPSHOT'
}Repository content filters prevent Gradle from asking JitPack for unrelated dependencies.
main-SNAPSHOT follows the latest commit on main. It is convenient for integration testing and updates when JitPack refreshes the snapshot. It is not a stable contract.
A release tag is immutable and reproducible. Production plugins should pin a release tag, then update it deliberately. Dependabot or Renovate can automate those update pull requests in consumer repositories.
The compile dependency does not control Velocity load order. Declare VGui in the dependent plugin's annotation:
@Plugin(
id = "myplugin",
name = "My Plugin",
dependencies = @Dependency(id = "vgui")
)
public final class MyPlugin {
}The standalone release embeds the PacketEvents runtime modules, creates the API with VGui's plugin container, and terminates it during normal shutdown. The bootstrap can reuse an API only when a shaded integration deliberately shares the same PacketEvents classes and class loader. Do not assume that a separately loaded plugin exposes the same singleton; conflicting unrelocated copies require explicit live validation.
Clone the repository and use the included Maven Wrapper:
./mvnw clean verifyWindows PowerShell:
.\mvnw.cmd clean verifyThe main jar is written to target/. Local installation into the Maven cache is available with ./mvnw install.
A separate domain is not required. GitHub Pages hosts the generated API documentation at agentnoobff.github.io/VGui. Pages is configured for this repository with HTTPS, and the workflow publishes from main.
- 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