feat: add minecraft-plugin-development skillFeat/minecraft plugin development (#1454)

* feat: add minecraft-plugin-development skill

* docs: expand minecraft plugin skill patterns

* docs: add minecraft skill examples

* docs: generalize minecraft skill patterns

* docs: expand minecraft progression guidance

* docs: add minecraft plugin validation workflow

---------

Co-authored-by: jiang <helloworld@jiang.cn>
This commit is contained in:
Zixuan Jiang
2026-04-28 09:41:41 +08:00
committed by GitHub
parent 7b9e8229fb
commit ca56e9577d
10 changed files with 1317 additions and 0 deletions

View File

@@ -0,0 +1,120 @@
# Maps, Heroes, And Feature Modules
Use this reference when building map systems, rotating arenas, class systems, kits, or modular gameplay features.
## Map patterns from real plugins
### Per-game map-instance usage
Observed traits:
- per-game map instances
- allowed map filtering through configuration
- gameplay objects tied to the active map instance
- match mode can constrain which maps are used
This works well for isolated match instances where each game owns its world and objectives.
### Persistent battlefield map rotation
Observed traits:
- one active combat world at a time
- source maps copied into temporary active worlds
- old worlds unloaded and deleted after rotation
- rotation warnings broadcast before swap
- spawn leaderboards refreshed after rotation
This works well for a persistent shared mode where the world rotates on a timer.
### Sky-island arena map usage
Observed traits:
- one game owns one copied map instance
- teams are assigned to configured island spawn locations
- chests are grouped by island, middle, or center role
- countdowns control cage removal, game start, refill timing, and game end
- visibility and chat are scoped to players in the same game instance
This works well for SkyWars-style modes where every match needs isolated islands, loot, spectators, and cleanup.
### Dungeon-node map usage
Observed traits:
- one game owns a lobby map plus temporary combat or event node maps
- route choices are generated from stage metadata
- players vote or confirm before advancing
- each combat node owns its wave queue and active mob set
- old node maps are unloaded only after players move to the new map or lobby
This works well for PvE roguelike, dungeon, wave, or boss progression plugins.
## Guidance for map architecture
- Per-instance minigame:
- use a `GameMap` owned by a game object
- Shared rotating battlefield:
- use a `MapManager` with one active world plus a rotation timer
- Temporary copied worlds:
- always teleport players out before unload
- clean folders after unload
- reapply gamerules after world creation
- Sky-island match:
- group spawn and chest locations by team or island role
- reset cages, inventories, scoreboards, and spectators per match
- Dungeon or route-node mode:
- treat every node as a temporary stage with explicit load, enter, clear, and unload steps
- keep mob ownership tied to the game, not just the world
## Class and hero system patterns
Observed class-system traits:
- `HeroRegistry`
- `HeroService`
- definitions grouped by theme
- hero tier progression
- hero skill config and handler
- selector GUI separated from assignment logic
Observed minigame power-selection parallels:
- brands and special items function like modular player powers
- selection limits and categories are explicit
- match rules can constrain available choices
Guidance:
- keep definitions separate from runtime assignment
- use registries for discoverable content
- store unlock rules and tiers in data, not hardcoded listener branches
- separate:
- what a class is
- how it is selected
- how it is applied
- how its active skills are triggered
## Feature module pattern
Good candidate modules for separate packages:
- map rotation
- hero or class system
- item powers
- boss systems
- match rules
- shops and GUIs
- scoreboards
- progression
Do not merge all these into one listener or one “game utils” class.
## Practical heuristic
If a feature has all three of these, it deserves its own module:
- custom data model
- config or definitions
- one or more listeners, commands, or scheduled tasks