---
name: minecraft-bukkit-pro
description: |
  Master Minecraft server plugin development with Bukkit, Spigot, and Paper APIs.
  Use this skill when developing custom plugins for Firefrost servers, extending
  existing plugins, or understanding internal Minecraft server mechanics.
source: skill.fish (sickn33/antigravity-awesome-skills)
---

# Minecraft Bukkit & Paper Pro

Master Minecraft server plugin development with Bukkit, Spigot, and Paper APIs with deep knowledge of internal mechanics and modern development patterns.

---

## WHEN TO USE

Use this skill when:
- Working on Minecraft Bukkit/Paper plugin development
- Needing guidance, best practices, or patterns for server plugins
- Building custom Firefrost features (whitelist sync, cross-server chat, etc.)
- Understanding how existing plugins work internally

Do not use when:
- Working with Forge/NeoForge/Fabric mods (different ecosystem)
- Managing servers via Pterodactyl (use other skills)
- General Minecraft gameplay questions

---

## CORE EXPERTISE

### API Mastery
- Event-driven architecture with listener priorities and custom events
- Modern Paper API features (Adventure, MiniMessage, Lifecycle API)
- Command systems using Brigadier framework and tab completion
- Inventory GUI systems with NBT manipulation
- World generation and chunk management
- Entity AI and pathfinding customization

### Internal Mechanics
- NMS (net.minecraft.server) internals and Mojang mappings
- Packet manipulation and protocol handling
- Reflection patterns for cross-version compatibility
- Paperweight-userdev for deobfuscated development
- Custom entity implementations and behaviors
- Server tick optimization and timing analysis

### Performance Engineering
- Hot event optimization (PlayerMoveEvent, BlockPhysicsEvent)
- Async operations for I/O and database queries
- Chunk loading strategies and region file management
- Memory profiling and garbage collection tuning
- Thread pool management and concurrent collections
- Spark profiler integration for production debugging

### Ecosystem Integration
- Vault, PlaceholderAPI, ProtocolLib advanced usage
- Database systems (MySQL, Redis, MongoDB) with HikariCP
- Message queue integration for network communication
- Web API integration and webhook systems
- Cross-server synchronization patterns
- Docker deployment and Kubernetes orchestration

---

## DEVELOPMENT PHILOSOPHY

### Research First
Always use WebSearch for current best practices and existing solutions

### Architecture Matters
Design with SOLID principles and design patterns

### Performance Critical
Profile before optimizing, measure impact

### Version Awareness
Detect server type (Bukkit/Spigot/Paper) and use appropriate APIs

### Modern When Possible
Use modern APIs when available, with fallbacks for compatibility

### Test Everything
Unit tests with MockBukkit, integration tests on real servers

---

## TECHNICAL APPROACH

### Project Analysis
1. Examine build configuration for dependencies and target versions
2. Identify existing patterns and architectural decisions
3. Assess performance requirements and scalability needs
4. Review security implications and attack vectors

### Implementation Strategy
1. Start with minimal viable functionality
2. Layer in features with proper separation of concerns
3. Implement comprehensive error handling and recovery
4. Add metrics and monitoring hooks
5. Document with JavaDoc and user guides

### Quality Standards
- Follow Google Java Style Guide
- Implement defensive programming practices
- Use immutable objects and builder patterns
- Apply dependency injection where appropriate
- Maintain backward compatibility when possible

---

## OUTPUT EXCELLENCE

### Code Structure
- Clean package organization by feature
- Service layer for business logic
- Repository pattern for data access
- Factory pattern for object creation
- Event bus for internal communication

### Configuration
- YAML with detailed comments and examples
- Version-appropriate text formatting (MiniMessage for Paper, legacy for Bukkit/Spigot)
- Gradual migration paths for config updates
- Environment variable support for containers
- Feature flags for experimental functionality

### Build System
- Maven/Gradle with proper dependency management
- Shade/shadow for dependency relocation
- Multi-module projects for version abstraction
- CI/CD integration with automated testing
- Semantic versioning and changelog generation

### Documentation
- Comprehensive README with quick start
- Wiki documentation for advanced features
- API documentation for developer extensions
- Migration guides for version updates
- Performance tuning guidelines

---

## QUICK REFERENCE

### Channel Types (for reference)
| Type | Description |
|------|-------------|
| 0 | Text channel |
| 2 | Voice channel |
| 4 | Category |
| 5 | Announcement |
| 13 | Stage |
| 15 | Forum |

### Common Event Priorities
```java
@EventHandler(priority = EventPriority.LOWEST)   // First to run
@EventHandler(priority = EventPriority.LOW)
@EventHandler(priority = EventPriority.NORMAL)   // Default
@EventHandler(priority = EventPriority.HIGH)
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.MONITOR)  // Last, read-only
```

### Basic Plugin Structure
```java
public class MyPlugin extends JavaPlugin {
    @Override
    public void onEnable() {
        // Load config
        saveDefaultConfig();
        
        // Register listeners
        getServer().getPluginManager().registerEvents(new MyListener(), this);
        
        // Register commands
        getCommand("mycommand").setExecutor(new MyCommand());
        
        getLogger().info("Plugin enabled!");
    }
    
    @Override
    public void onDisable() {
        getLogger().info("Plugin disabled!");
    }
}
```

### Async Database Pattern
```java
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
    // Database operations here (off main thread)
    String result = database.query("SELECT * FROM players");
    
    // Return to main thread for Bukkit API calls
    Bukkit.getScheduler().runTask(plugin, () -> {
        player.sendMessage("Query complete: " + result);
    });
});
```

---

## FIREFROST CONTEXT

When building plugins for Firefrost:
- Consider integration with Arbiter for subscriber verification
- Use consistent branding (Fire/Frost colors)
- Document for future Chroniclers
- Test on Dev Panel before production deployment

---

**Source:** skill.fish — sickn33/antigravity-awesome-skills
**Added:** 2026-04-09 by Chronicler #73

---

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