Marketplace allaymc-plugin-dev
Build, update, and troubleshoot AllayMC plugins in Java or other JVM languages. Use when creating a new AllayMC plugin, migrating an existing plugin to a new Allay API version, wiring commands/events/tasks/config, or setting up Gradle and plugin metadata (plugin.json or AllayGradle plugin block).
install
source · Clone the upstream repo
git clone https://github.com/aiskillstore/marketplace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/allaymc/allaymc-plugin-dev" ~/.claude/skills/aiskillstore-marketplace-allaymc-plugin-dev && rm -rf "$T"
manifest:
skills/allaymc/allaymc-plugin-dev/SKILL.mdsource content
AllayMC Plugin Development
Overview
Create AllayMC plugins using the official Java template and the Allay API. Keep the workflow aligned with the latest Allay API and docs from the bundled references, and default to the template's Java 21 toolchain unless the user requests otherwise.
Null-safety policy
AllayMC currently does not use annotations such as JSpecify's @Nullable/@NonNull. Unless a method's Javadoc explicitly states that a parameter or return value may be null, treat it as non-null.
Workflow
1) Pick the starting point
- Prefer the official template at
for new plugins.references/JavaPluginTemplate - If updating an existing plugin, diff its
and plugin main class against the template.build.gradle.kts
2) Align Gradle and plugin metadata
- Update
,group
, anddescription
inversion
.build.gradle.kts - Keep
aligned with the package of the plugin main class.group - Keep the Java toolchain consistent with the template unless the user needs a different version.
- In the
block:allay {}- Set
to the target Allay API version.api - Set
to the fully qualified main class (or short suffix as used in the template).plugin.entrance - Update
andauthors
.website
- Set
- If the project does not use the AllayGradle plugin, create or update
per the docs inplugin.json
.references/Allay/docs/tutorials/create-your-first-plugin.md
3) Implement the plugin entry class
- Extend
.org.allaymc.api.plugin.Plugin - Override lifecycle methods as needed:
for lightweight setup.onLoad
for registrations and runtime wiring.onEnable
for cleanup.onDisable
- Keep the class name and
/plugin.entrance
entrance consistent.plugin.json - If reloadable behavior is required, override
and implementisReloadable
.reload - Reference the base class in
.references/Allay/api/src/main/java/org/allaymc/api/plugin/Plugin.java
4) Add core features (choose only what is needed)
- Commands: follow
.references/Allay/docs/tutorials/register-commands.md - Events: follow
.references/Allay/docs/tutorials/register-event-listeners.md - Tasks: follow
.references/Allay/docs/tutorials/schedule-tasks.md - Config: follow
.references/Allay/docs/tutorials/use-config.md - Permissions: follow
.references/Allay/docs/tutorials/use-permission.md - i18n: follow
.references/Allay/docs/tutorials/use-i18n.md - Forms/UI: follow
.references/Allay/docs/tutorials/use-forms.md - Data: follow
.references/Allay/docs/tutorials/persistent-data-container.md - Blocks/items: follow
andreferences/Allay/docs/tutorials/block-api.md
.references/Allay/docs/tutorials/item-api.md
5) Build and run
- Use
for local testing when the AllayGradle plugin is configured../gradlew runServer - Use
to build the shaded jar../gradlew shadowJar - Copy the jar from
into the Allay serverbuild/libs/*-shaded.jar
directory.plugins
6) Troubleshoot (only when asked)
- Plugin not loading: verify
(orplugin.entrance
entrance),plugin.json
/api
, and the jar location.api_version - API mismatch: update the Gradle
version to a valid Allay API release.allay.api - Class not found: confirm the package name matches
and the compiled class name.group
Reference map (load on demand)
- Template project:
references/JavaPluginTemplate
for Gradle + AllayGradle conventionsbuild.gradle.kts
for template initialization stepsREADME.md
for lifecycle structuresrc/main/java/.../JavaPluginTemplate.java
- AllayGradle:
references/AllayGradle- Gradle plugin sources and configuration patterns
- Allay source and API:
references/Allay- API entry points:
api/src/main/java/org/allaymc/api - Tutorials:
docs/tutorials/*.md
- API entry points:
Output expectations
- Keep Gradle config, plugin metadata, and main class in sync.
- Target the requested Allay API version and reflect it in Gradle metadata.
- Prefer the template conventions unless the user explicitly wants a custom structure.