allaymc-plugin-dev

Create, update and troubleshoot AllayMC plugins in Java or other JVM languages. Use when (1) creating a new AllayMC plugin. (2) migrating an existing plugin to AllayMC. (3) troubleshooting an AllayMC plugin.

16 stars

Best use case

allaymc-plugin-dev is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Create, update and troubleshoot AllayMC plugins in Java or other JVM languages. Use when (1) creating a new AllayMC plugin. (2) migrating an existing plugin to AllayMC. (3) troubleshooting an AllayMC plugin.

Teams using allaymc-plugin-dev should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/allaymc-plugin-dev/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/tools/allaymc-plugin-dev/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/allaymc-plugin-dev/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How allaymc-plugin-dev Compares

Feature / Agentallaymc-plugin-devStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Create, update and troubleshoot AllayMC plugins in Java or other JVM languages. Use when (1) creating a new AllayMC plugin. (2) migrating an existing plugin to AllayMC. (3) troubleshooting an AllayMC plugin.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# AllayMC Plugin Development

## About AllayMC

AllayMC is a third-party server software for Minecraft: Bedrock Edition written in Java. It provides a set of
APIs for plugins to use. AllayMC is broadly divided into the following two modules:

- api: A set of interfaces provided for plugins.
- server: An implementation of the api. Plugins usually don't have access to it.

## About Plugin

Plugins in AllayMC are just like Bukkit plugins, they are loaded by the server when the server starts. Plugins
are used to extend server functionality.

## Workflow for a new plugin

### 1) Initialize the project

- Use the official template at `references/JavaPluginTemplate` If the user haven't initialize the project.
- If the user has already initialized the project, proceed to the next step.

### 2) Initialize Gradle and plugin metadata

Before you begin, ask the user the following questions:

- What is the name of the plugin?
- What is the package name used by the plugin?
- What is the plugin author(s) name?
- What is the website of the plugin?
- What is the allay-api version used for the plugin?

After the user answers the above questions, initialize the project metadata with the collected information.
Before that, determine whether the user is using `JavaPluginTemplate`, which is implemented by determining whether
the current project package name is `org.allaymc.javaplugintemplate`.

#### Case 1: If the project is using `JavaPluginTemplate`:

- Rename package name from `org.allaymc.javaplugintemplate` to the user provided group name.
- Set the project name in `settings.gradle.kts` to the user provided plugin name.
- Update `build.gradle.kts`, solve all the TODOs inside.

#### Case 2: If the project is not using `JavaPluginTemplate`:

- Update `group`, `version` (should start with `0.1.0`), and `description` in `build.gradle.kts`.
- Keep package of the plugin main class aligned with the value of `group` in `build.gradle.kts`.
- Set the Java toolchain to 21 unless the user needs a different version in `build.gradle.kts`.
- If the project is using `AllayGradle` plugin, update the `allay {}` block in `build.gradle.kts`:
  - Set `api` to the target Allay API version.
  - Set `plugin.entrance` to the fully qualified main class (or short suffix as used in the template).
  - Update `authors` and `website`.
- If the project does not use the `AllayGradle` plugin, create `plugin.json` per the docs in `references/Allay/docs/tutorials/create-your-first-plugin.md`.

### 3) Implement the plugin entry class

- Create the plugin entry class using plugin name and let it extends `org.allaymc.api.plugin.Plugin`
- Override lifecycle methods in the entry class as needed:
  - `onLoad` which is called before world loading.
  - `onEnable` which is called after world loading.
  - `onDisable` which is called when the server is stopping.
- If reloadable behavior is required, override `isReloadable` and implement `reload`.

### 4) Implement the plugin logic

Understand the user's needs and read the documentation and code marked in the reference map below as needed.

### 5) Build and run

- Use `./gradlew runServer` for local testing when the AllayGradle plugin is configured.
- Use `./gradlew shadowJar` to build the shaded jar.

## Reference map

- Allay documents (read on demand): `references/Allay/docs/tutorials` and `references/Allay/docs/advanced`.
- JavaPluginTemplate: `references/JavaPluginTemplate`
- Allay project source: `references/Allay`
  - Allay API: `references/Allay/api/src/main/java/org/allaymc/api`
  - Allay Server (API Implementation): `references/Allay/server/src/main/java/org/allaymc/server`
- AllayGradle project source: `references/AllayGradle`
  - Usage Guide: `references/AllayGradle/README.md`

## Notes

- AllayMC is multithreaded, and special attention should be paid to multithreaded security issues when writing project code.
- 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.
- Don't overwrite defensive code, such as checking if an object that is explicitly marked as impossible null is null. Produce readable, easy-to-maintain code.

Related Skills

blueprintkit-plugin

16
from diegosouzapw/awesome-omni-skill

BlueprintKit Plugin - Complete planning framework automatically including all 14 planning sections (.claude/skills/blueprintkit/planning/0-Master-Index.md through .claude/skills/blueprintkit/planning/13-Lessons-Learned-Continuous-Improvement.md) plus all 9 Claude Skills (tech-stack-selector, architecture-decisions, code-standards-enforcer, ci-cd-pipeline-builder, agile-executor, project-risk-identifier, automation-orchestrator, webapp-testing, web-artifacts-builder). When installed, all files are immediately available.

add-nixvim-plugin

16
from diegosouzapw/awesome-omni-skill

Add Neovim plugins not available in NixVim's official plugin set using extraPlugins and extraConfigLua. Use this skill when the user requests adding a plugin by GitHub URL or mentions a plugin that doesn't exist as a native NixVim module.

docs-plugin

16
from diegosouzapw/awesome-omni-skill

Command: docs-plugin

plugin-patterns

16
from diegosouzapw/awesome-omni-skill

Canvas plugin architecture patterns, best practices, and implementation templates

opencode-plugin-builder

16
from diegosouzapw/awesome-omni-skill

This skill should be used when creating, modifying, or debugging OpenCode plugins. It provides the complete plugin architecture, available hooks, event types, SDK client methods, and best practices learned from real-world plugin development.

laravel-inertia-isolated-plugin-architect

16
from diegosouzapw/awesome-omni-skill

Create a Laravel plugin with an isolated UI which is provided by Inertia.js and Vue.js which can live on any Laravel host app no matter of the used technology in the frontend.

datasette-plugins

16
from diegosouzapw/awesome-omni-skill

Writing Datasette plugins using Python and the pluggy plugin system. Use when Claude needs to: (1) Create a new Datasette plugin, (2) Implement plugin hooks like prepare_connection, register_routes, render_cell, etc., (3) Add custom SQL functions, (4) Create custom output renderers, (5) Add authentication or permissions logic, (6) Extend Datasette's UI with menus, actions, or templates, (7) Package a plugin for distribution on PyPI

custom-plugin-flutter-skill-backend

16
from diegosouzapw/awesome-omni-skill

1500+ lines of backend integration mastery - REST APIs, GraphQL, WebSockets, authentication, Firebase, error handling with production-ready code examples.

agent-tower-plugin

16
from diegosouzapw/awesome-omni-skill

Multi-agent deliberation for Claude Code - orchestrate AI coding assistants (Claude, Codex, Gemini) for council, debate, and consensus workflows

wordpress-plugin-development

16
from diegosouzapw/awesome-omni-skill

WordPress plugin development workflow covering plugin architecture, hooks, admin interfaces, REST API, and security best practices.

utils:find-claude-plugin-root

16
from diegosouzapw/awesome-omni-skill

This skill should be used when the user needs to locate a plugin's installation path, when ${CLAUDE_PLUGIN_ROOT} doesn't expand in markdown files, or when invoked via /utils:find-claude-plugin-root. Generates a CPR resolver script at /tmp/cpr.py.

bgo

16
from diegosouzapw/awesome-omni-skill

Automated Blender build-go workflow. Automatically builds, removes old version, installs, enables, and launches Blender with your extension/add-on. Use when you want to quickly test changes, execute complete build-to-launch cycle, or run custom packaging scripts with automatic Blender launch.

Coding & Development