Links
Tags
Creators
Details
4.1.0
Compatibility
Changes
Airdrop 4.1.0 adds delivery messages and a supported plugin API
Release notes covering changes since 4.0.0.
Airdrop 4.1 tells players when their crate spawns and lands. A new versioned API lets other plugins request drops and follow delivery outcomes.
Players can follow their deliveries
- Players receive an incoming message once their crate spawns, including the amount charged for a paid drop. A landing message gives the crate's block coordinates and names the world if the player has moved to another world.
- Root help and tab completion show commands and packages available to the sender. Package deletion suggests existing package names.
LuckPerms is now optional
- LuckPerms is now optional. Airdrop uses standard Bukkit permissions when it is absent. Non-operators still need explicit package permissions.
- The starter package created when
packages.ymlis missing still costs10.0. Existing package files, including an intentionally emptypackages: {}, keep their contents and prices. - Packages that administrators price at
0work without an economy plugin. Paid player requests require enabled economy support, VaultUnlocked or Vault, and a compatible economy provider.
Status and payment diagnostics help administrators investigate failures
- The new
/airdrop statuscommand reports readiness, economy availability and provider, package count and revision, pending requests, active drops, capacity limits, and the latest sanitized diagnostic. Administrators and console users can run it while Airdrop is starting. /airdrop versionidentifies the plugin, extension API, Paper target, and Java requirement separately, with a documentation link. The unchanged old English version message upgrades automatically; customized text keeps working with its legacy placeholders.- Payment warnings include the request ID, player, amount, and provider to help administrators investigate uncertain withdrawals and failed refunds.
Package and crate fixes protect rewards
- Reward items named Save, Cancel, Back, or Help are preserved. Editor controls are identified by their metadata rather than their display names.
- Explosion handling leaves barrel contents for Paper to process instead of deleting them during Airdrop cleanup. Old inventory events cannot remove a replacement barrel or change another crate's state.
- Crate effects stop after a successful open. A cancelled open leaves the effects running, and a missing or invalid smoke setting keeps smoke disabled.
- If the destination world unloads before a paid crate can spawn, Airdrop makes one best-effort refund attempt for a confirmed charge while the plugin remains active. Ambiguous payment results and failures during shutdown still do not trigger automatic refunds.
- Startup and reload callbacks stop publishing state after shutdown begins.
Plugin integrations get a versioned service and lifecycle events
Airdrop introduces extension API 1.0.0 under com.airdropmc.api, versioned
independently from the plugin and Paper.
- Discover
AirdropApithrough Bukkit'sServicesManagerand await readiness before requesting drops. - Submit typed player or system requests and observe separate spawn and final
outcomes through a
DropHandle, including delivery and payment status. - Cancel requests or landing attempts through supported events. Observe completed spawns, landings, outcomes, package registry changes, recovered drops, and the end of crate tracking.
- Query immutable package and active-drop snapshots, with request and crate IDs for tracking a drop across events.
- Use the new integration guide, API Javadocs, and compatibility policy. Automated signature checks guard the supported API against unintended changes.
Airdrop 4.1 makes source- and binary-incompatible changes to the old public
implementation classes. Rebuild integrations against the supported API.
Controllers, managers, Crate, and configuration wrappers are outside that
API. PackageDropEvent and PackageLandEvent remain deprecated, unsupported
adapters; use com.airdropmc.api.event instead.
CannotAffordException has been removed, and EconomyUnavailableException now
requires a DISABLED or NO_PROVIDER reason.
See the 4.1 migration guide and API version policy before updating an integration.
Upgrades require valid package files
- The supported runtime is Paper 1.21.11 with Java 21.
- Back up the plugin and its data before upgrading. Rename packages called
create,delete, orstatus, and update their permission grants; these names are now reserved. - Airdrop now enforces a maximum of 27 configured packages. Each package still holds up to 27 reward stacks.
- Malformed or missing item lists, invalid item entries, and paid packages without deliverable items now reject the configuration. Invalid item entries identify the package and entry index. A failed reload keeps the previous live state; invalid startup data must be corrected before Airdrop becomes ready.
- No new
config.ymlsettings are required. Smoke comments now describe the column above a landed crate. New English message keys are added automatically; custom locales can translate the delivery, help, and status messages.
Supplementary resources
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:wslZpHU2:qAmxSWDQ"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:wslZpHU2:qAmxSWDQ"
}

