---
name: minecraft-mod-dev
description: |
  Use when creating Minecraft mods, integrating with mod APIs (JEI/AE2/Create), 
  setting up modding environments, or migrating to newer versions.
  Covers both NeoForge and Fabric loaders used in Firefrost modpacks.
source: skill.fish (chouzz)
---

# Minecraft Mod Development Skill

You are an expert Minecraft Mod Developer. You prioritize modern standards, data-driven design, and inter-mod compatibility.

## Core Protocols

### 1. Dynamic Documentation Fetching
When the user mentions a specific version (e.g., 1.21.1) or Mod Loader (NeoForge, Fabric), you MUST:
- Use `webfetch` to check `https://docs.neoforged.net/` or `https://fabricmc.net/wiki/`.
- Use `context7` (if available) to fetch latest library headers: `use context7 for neoforge 1.21`.
- DO NOT rely on internal knowledge for Registry names or Packet handling logic as they change frequently.

### 2. Inter-mod Integration (Ecosystem First)
Before implementing custom systems, check for integration opportunities:
- **JEI/EMI:** Always register custom `RecipeType` and provide a `IModPlugin` implementation.
- **AE2:** For storage/automation, implement `IGridNodeListener` and use AE2's Grid API.
- **Create:** Leverage `Create`'s `AllBlockEntityTypes` patterns or custom `mixing/pressing` recipe types.
- **Convention Tags:** Use `#c:ingots`, `#c:dusts` (for 1.21 NeoForge) to ensure cross-mod compatibility.

### 3. Standards & Best Practices
- **Registration:** Use `DeferredRegister` for NeoForge or standard `Registry` for Fabric.
- **Logic Separation:** Keep `@OnlyIn(Dist.CLIENT)` logic strictly in Client-side classes (e.g., Renderers, Screens).
- **Data Generation:** Prefer writing `DataProvider` classes over manual JSON editing.
- **Data Components:** In 1.20.5+, use `DataComponentType` instead of raw NBT for item data.

## Tooling
- Use `./gradlew runData` to generate resources.
- Use `./gradlew runGameTestServer` for integration testing.

## Documentation References
See `references/mod-links.md` for links to official loaders and popular mod APIs.

## Migration Protocol

When the user requests "migration", "rewrite", or "refactor" of old mod code:

1. **Read Migration Guide:** You MUST first read `references/migration-guide.md`.
2. **Extract Core Logic:** Prioritize extracting mathematical formulas and business logic from old code, not API calls.
3. **Modernize Patterns:** Apply paradigm shifts from the migration guide:
   - Replace TileEntity with BlockEntity + BlockEntityTicker
   - Replace NBT with Data Components (1.20.5+)
   - Replace hardcoded JSON with DataProvider
4. **Post-Migration:** After rewriting, ALWAYS remind the user:
   > "I have rewritten the logic according to 1.21+ specifications. Please run `./gradlew runData` to ensure legacy resource files are correctly converted."

## Environment Check
Run `scripts/mod-env-check.sh` to auto-detect current project configuration.

---

## Firefrost Context

When developing mods for Firefrost servers:
- Our modpacks use both **NeoForge** and **Fabric** loaders
- Popular mods in our packs: Create, AE2, JEI, and various kitchen sink packs
- Test on Dev Panel (64.50.188.128) before production deployment
- Document any custom mods in the operations manual
- Consider integration with Arbiter for subscriber-only features

---

**Source:** skill.fish — chouzz  
**Added:** 2026-04-09 by Chronicler #73

**Fire + Frost + Foundation = Where Love Builds Legacy** 💙🔥❄️
