Anvil
IntegrationsGradle

Plugins and dependencies

Choose the Anvil Gradle entry point and install platform, protocol library, and capability artifacts.

Choose scenario execution, JUnit testing, or both. Keep all Anvil plugin and library versions aligned. The installation guide contains repository configuration and a complete build script.

Entry points

Plugin IDAdds
me.whereareiam.anvilForeground scenario listing/execution and IDE project discovery
me.whereareiam.anvil.junitJUnit integration and anvilTest

Each entry point installs shared Gradle declarations, the anvil source set, and artifact registration. Neither selects platform providers, protocol libraries, or capability providers. Apply both plugins when the same project needs automated tests and interactive environments:

plugins {
	id("me.whereareiam.anvil") version "0.0.1"
	id("me.whereareiam.anvil.junit") version "0.0.1"
}

Plugin order does not change the shared configuration. For JUnit only, omit the first plugin; for scenario execution and IntelliJ discovery without JUnit, omit the second. Installing the IntelliJ plugin requires no additional IDE dependency in the build. The JUnit entry point does not register project discovery; apply the standard Anvil plugin to expose its compiled scenario definitions to IntelliJ as well. JUnit methods still execute through JUnit.

Platform and capability unit plugins add their dependencies and shared declarations. They do not select an execution workflow. Use me.whereareiam.anvil.capability.default explicitly when you want the complete built-in capability set.

The standard me.whereareiam.anvil plugin also supplies IDE discovery and the executable tooling runtime. See IDE project tooling for preparation and definition discovery.

Platform units

Plugin IDProvider and matching agent
me.whereareiam.anvil.platform.paperPaper and the Bukkit agent
me.whereareiam.anvil.platform.spigotSpigot and the Bukkit agent
me.whereareiam.anvil.platform.neoforgeNeoForge and its agent
me.whereareiam.anvil.platform.velocityVelocity and its agent
me.whereareiam.anvil.platform.bungeecordBungeeCord and its agent

Apply a unit for every platform used in the scenario. The execution plugins do not select them. Server and proxy setup lives under Platforms.

Capability units

The prefix is me.whereareiam.anvil.capability.. Available suffixes are session, messages, movement, inventory, interaction, commands, dialogs, dispatch, players, and default. The default unit supplies all built-in capabilities when explicitly selected. Individual wiring artifacts bring their required capability dependencies.

See Player capabilities for player actions and observations. The dispatch unit supplies the process's agent-backed Dispatch capability, and the players unit the process's Players capability.

Dependency configurations

Protocol libraries are installed through the standard Anvil source-set configuration:

dependencies {
	add("anvilRuntimeOnly", "com.example:custom-protocol:1.0.0")
}
ConfigurationPurpose
anvilImplementationScenario and integration implementation dependencies
anvilCompileOnlyCompile-time-only scenario dependencies
anvilRuntimeOnlyRuntime providers, launcher, and platform artifacts
anvilCompileClasspathResolved compile classpath for the Anvil source set
anvilRuntimeClasspathResolved runtime classpath for Anvil tasks

The plugins add their dependencies directly to the source-set configurations. Platform and capability units configure those dependencies internally. Protocol libraries, including the bundled protocol-mcprotocol, belong on anvilRuntimeOnly. Each player uses the installed library with the strongest support for its version; anvil { engine { protocolLibrary("mcprotocol") } } sets a default when an explicit choice is needed. Anvil does not need to be packaged into the plugin under test.

On this page