
# Commands Skill — Velocity ## Purpose Reference this skill when registering proxy-level commands on Velocity. Velocity provides `SimpleCommand`, `RawCommand`, and `BrigadierCommand` interfaces — each suited to different use cases. ## When to Use This Skill - Adding `/proxy-command` that players can run on the proxy directly - Creating admin commands that work regardless of which backend server the player is on - Implementing commands with tab completion at the proxy level ## API Quick Refere
# Plugin Messaging Skill — Paper ## Purpose Reference this skill when a Paper backend plugin needs to send or receive data to/from a Velocity or Waterfall proxy using the plugin messaging channel system. ## When to Use This Skill - Sending a player to a different backend server via the proxy - Getting the IP of the proxy the player connected through - Notifying the proxy of a game event (e.g., game over, player rank change) - Receiving instructions from the proxy plugin (e.g., switch server, a
# Inventory Skill — Paper ## Purpose Reference this skill when building custom clickable inventory GUIs (chest menus, shop UIs, settings screens) in Paper 1.21. Covers inventory creation, `InventoryHolder` pattern, and event-driven click handling. ## When to Use This Skill - Creating a chest-style menu that players open with a command - Building a shop or upgrade UI where clicks perform actions - Handling `InventoryClickEvent` to route button clicks to plugin logic - Preventing players from ta
# Adventure Components Skill — Paper ## Purpose Reference this skill when building rich text messages, titles, action bars, or interactive hover/click text in Paper 1.21. Paper natively uses the [Adventure](https://docs.advntr.xyz/) library — never use legacy `ChatColor` in new code. ## When to Use This Skill - Sending formatted messages with colours, bold, or strikethrough - Parsing MiniMessage format from config files (e.g., `"<gold>Hello <player>!"`) - Adding hover tooltips or click actions
# Commands Skill — Paper ## Purpose Reference this skill when registering commands on a Paper 1.21 server. Paper uses native Brigadier via `LifecycleEvents.COMMANDS`; this skill explains when and how to use it versus the legacy `CommandExecutor` approach. ## When to Use This Skill - Creating any `/command` that players or operators can run - Adding tab completion to commands - Restricting commands to players with specific permissions - Supporting subcommands with typed arguments (integers, pla
# Commands Skill — Purpur ## Purpose Reference this skill when registering commands on a Purpur server. Purpur inherits the full Paper Brigadier command system — there are no Purpur-specific command APIs. This skill documents any minor differences and cross-links to Paper. ## When to Use This Skill - Setting up commands on a Purpur-targeted plugin - Checking whether Purpur adds any command-related APIs beyond Paper ## API Quick Reference Purpur adds no new command APIs. Use the Paper Brigadi
# Effects Skill — Paper ## Purpose Reference this skill when adding visual or audio feedback to plugin actions in Paper 1.21. Covers the Particle API for visual effects and `Player#playSound` / `World#playSound` for audio. ## When to Use This Skill - Spawning particles at a location (explosions, sparkles, trails) - Playing a sound when a player earns a reward or completes an action - Creating ambient area effects with repeating tasks - Using resource-pack custom sounds via namespaced keys ##
# Entities Skill — Paper ## Purpose Reference this skill when spawning, customising, or removing entities in Paper 1.21. Covers mob spawning, attribute modification, equipment, Display entities, and the `EntitySpawnEvent`. ## When to Use This Skill - Spawning a custom mob with modified health, speed, or damage - Creating a floating text label using `TextDisplay` - Attaching equipment (armour, held items) to a mob - Preventing specific entity types from spawning via events ## API Quick Referen
# Events Skill — Paper ## Purpose Reference this skill when implementing event listeners on a Paper server. Covers event registration, priority ordering, cancellation, and thread-safety rules for all Bukkit/Paper events. ## When to Use This Skill - Adding a listener for any `org.bukkit.event.*` or `io.papermc.paper.event.*` event - Deciding event priority for overlapping listeners - Handling cancellable events correctly - Working with async events (especially chat) ## API Quick Reference | C
# Events Skill — Velocity ## Purpose Reference this skill when handling events in a Velocity proxy plugin. Velocity's event system is fully async and uses `@Subscribe` annotations instead of Bukkit's `@EventHandler`. ## When to Use This Skill - Responding to player connections, disconnections, or server switches - Intercepting login to apply bans, authentication checks, or queue systems - Broadcasting proxy-level events to your own subsystems - Registering event listeners on Velocity ## API Q
# Events Skill — Waterfall ## Purpose Reference this skill when handling events in a Waterfall (BungeeCord) proxy plugin. Waterfall's event system resembles Bukkit's `@EventHandler` pattern but uses BungeeCord-specific event classes. ## When to Use This Skill - Responding to player login, server switch, or disconnect events at the proxy level - Intercepting chat at the proxy - Implementing ban checks or authentication before players join the network ## API Quick Reference | Class / Method |
# Items Skill — Paper ## Purpose Reference this skill when creating, modifying, or identifying `ItemStack` objects in Paper 1.21. Covers the `ItemMeta` API for display names, lore, enchantments, and flags, as well as custom model data and recipe registration. ## When to Use This Skill - Building a custom item with a name, lore, and enchantments - Detecting whether a player holds a specific custom item - Registering a crafting recipe for a custom item - Modifying item durability, item flags, or
# Plugin Messaging Skill — Velocity ## Purpose Reference this skill when a Velocity proxy plugin needs to send or receive data to/from backend Paper/Purpur servers using plugin messaging channels. ## When to Use This Skill - Receiving data from backend servers at the proxy level - Forwarding messages between backend servers via the proxy - Building custom proxy-backend communication protocols ## API Quick Reference | Class / Method | Purpose | Notes | |---------------|---------|-------| | `C
# Plugin Messaging Skill — Waterfall ## Purpose Reference this skill when a Waterfall proxy plugin needs to send or receive plugin messages to/from backend Paper/Purpur servers via the `BungeeCord` channel or custom plugin channels. ## When to Use This Skill - Intercepting `BungeeCord` channel messages at the proxy - Building custom backend ↔ proxy communication on Waterfall - Forwarding messages between backend servers via the proxy ## API Quick Reference | Class / Method | Purpose | Notes
建立自定義 NMS 實體:繼承現有 Mob 類別、自訂 PathfinderGoal、替換 vanilla 實體行為 / Create custom NMS entities with custom PathfinderGoal AI
透過 Netty ChannelDuplexHandler 注入玩家連線管線,攔截/修改 Clientbound 與 Serverbound 封包 / Intercept and modify packets via Netty pipeline injection
產生封包發送工具類,透過 ServerPlayer.connection 將 Clientbound 封包推送至客戶端(Paper NMS + Mojang-mapped)/ Generate packet sender utility to push Clientbound packets via ServerPlayer.connection
反射式 NMS 存取橋接:避開 CraftBukkit v1_21_R1 版本編譯依賴,透過 reflection 快取取得跨版本相容性 / Reflection-based NMS bridge for cross-version compatibility without Paperweight compile dependency
多版本 NMS 相容性 Adapter 模式:抽象介面 + 版本特定實作 + runtime dispatch,讓同一 plugin 支援多個 MC 版本 / Multi-version NMS compatibility adapter pattern
# Permissions Skill — Paper ## Purpose Reference this skill when checking or granting permissions in a Paper 1.21 plugin. Covers native Bukkit `hasPermission` / `addAttachment`, plugin.yml permission node declaration, and integrating with Vault for economy and permission group lookups. ## When to Use This Skill - Checking whether a player has a permission node before executing a command or action - Granting temporary per-session permissions at runtime (e.g., after a mini-game win) - Reading a
# Scheduling Skill — Paper ## Purpose Reference this skill when running code on a delayed, repeating, or asynchronous basis in a Paper plugin. Covers `BukkitScheduler` task types, `BukkitTask` cancellation, and composing async work with `CompletableFuture`. ## When to Use This Skill - Running code after a delay (e.g., countdown timers, delayed kicks) - Running code on every tick or at fixed intervals (e.g., game loops, health regeneration) - Offloading IO or database work to an async thread wi
# Scoreboard Skill — Paper ## Purpose Reference this skill when displaying scores, sidebars, nametag colours, or tab-list headers using the Paper/Bukkit Scoreboard API in Paper 1.21. Covers objectives, scores, sidebar display, and team management. ## When to Use This Skill - Showing a per-player sidebar with stats (kills, coins, time remaining) - Colouring player nametags above their head - Creating teams that share a colour, prefix, or collision rule - Displaying tab-list (player-list) header
# Storage Skill — Paper ## Purpose Reference this skill to choose the right storage mechanism for a Paper plugin. Covers when to use config files, PersistentDataContainer (PDC), or a full database, and links to detailed implementation guides for each. ## When to Use This Skill - Deciding where to persist plugin data - Storing per-entity or per-block metadata - Managing plugin configuration that users can edit - Setting up a database for large-scale or cross-server data ## API Quick Reference
# Storage Skill — Purpur ## Purpose Reference this skill when implementing storage in a Purpur-targeted plugin. Purpur does not add new storage APIs — all Paper storage mechanisms work identically. This skill documents the `purpur.yml` config file integration and cross-links to Paper storage guides. ## When to Use This Skill - Reading Purpur-specific settings from `purpur.yml` - Storing plugin data on a Purpur server - Deciding between config, PDC, and database on Purpur ## API Quick Referenc
# Storage Skill — Velocity ## Purpose Reference this skill when implementing storage in a Velocity proxy plugin. Velocity has no Bukkit APIs — storage is handled via standard Java file I/O, TOML/YAML/JSON libraries, or databases. No `FileConfiguration`, `PersistentDataContainer`, or Bukkit scheduler exists on Velocity. ## When to Use This Skill - Storing proxy-level player data (network ranks, mute status, connected server history) - Reading plugin configuration on Velocity - Connecting to a s
# Teleportation Skill — Paper ## Purpose Reference this skill when teleporting players or entities in Paper 1.21. Covers async teleport (`teleportAsync`), safe destination detection, `EntityTeleportEvent`, and cross-world teleportation patterns. ## When to Use This Skill - Teleporting a player to a saved home location - Sending a player to a warp point safely (ensuring the destination is not inside a block) - Cross-world teleportation (e.g., hub → game world) - Preventing certain entity telepo
# Testing Skill — Paper ## Purpose Reference this skill when writing unit tests for Paper plugin code. Covers MockBukkit 4.x for JUnit 5: server mock lifecycle, player mocks, scheduler tick simulation, and testing event handlers and commands without a real server. ## When to Use This Skill - Testing logic in event handlers, commands, or service classes - Verifying `ItemMeta`, inventory contents, or PDC values in unit tests - Running the Bukkit scheduler in tests to confirm delayed/repeating ta
# Events Skill — Purpur ## Purpose Reference this skill when handling Purpur-specific events that are not available in Paper. All Paper events are also available in Purpur — this skill covers only the additional events provided by Purpur's API. ## When to Use This Skill - Detecting when a player goes AFK or returns from AFK - Responding to Purpur-extended entity/damage events - Writing a plugin that specifically targets Purpur (not cross-platform) ## API Quick Reference | Class / Method | Pu
操作 Minecraft 1.21 DataComponentType 物品組件系統,讀寫 CustomData、MaxStackSize、Enchantments 等組件(Paper NMS + Mojang-mapped)/ Read and write 1.21 DataComponentType item components including CustomData, MaxStackSize, Enchantments
實作自定義 NMS BlockEntity(含 NBT 序列化、Tick 邏輯、客戶端同步),比 Bukkit BlockState 更靈活(Paper NMS + Mojang-mapped)/ Implement custom NMS BlockEntity with NBT serialization, tick logic, and client sync
透過 ClientboundLevelParticlesPacket 實現進階 NMS 粒子效果:客戶端專屬、大量粒子、自定義參數(Paper NMS + Mojang-mapped)/ Advanced NMS particle effects via ClientboundLevelParticlesPacket with per-client and bulk support
繼承 AbstractContainerMenu 建立自定義容器 GUI,支援 slot 事件攔截與資料同步(Paper NMS + Mojang-mapped)/ Build custom container GUIs by extending AbstractContainerMenu with slot event handling
透過 NMS AttributeMap/AttributeModifier 動態修改實體屬性(MAX_HEALTH、ATTACK_DAMAGE 等),比 Bukkit API 更精確(Paper NMS + Mojang-mapped)/ Dynamically modify entity attributes via NMS AttributeMap/AttributeModifier
透過 NMS LevelChunk 直接讀寫方塊、高度圖、ChunkSection 資料,比 Bukkit Chunk API 更快更底層(Paper NMS + Mojang-mapped)/ Direct LevelChunk block, heightmap, and ChunkSection access for high-performance operations
透過 NMS ServerBossEvent 操作 Boss Bar 進度條、顏色、風格、可見性,實現每人獨立 Boss Bar(Paper NMS + Mojang-mapped)/ Operate Boss Bar progress, color, style, and per-player visibility via NMS ServerBossEvent
操作 GameProfile 進行 skin 注入,用於 NPC 外觀設定與假玩家實體(Paper NMS + Mojang-mapped)/ Manipulate GameProfile for skin injection used in NPC appearance and fake player entities
直接操作 CompoundTag 讀寫物品、實體、方塊實體的 NBT 資料(Paper NMS + Mojang-mapped)/ Read and write NBT data on items, entities, and block entities via CompoundTag
透過 NMS Scoreboard/Objective/Team API 操作 sidebar、tablist 顯示名稱與計分板(Paper NMS + Mojang-mapped)/ Operate sidebar, tablist, and scoreboard via NMS Scoreboard/Objective/Team API