docs(10): plan Phase 10 — 5 demo plugins Hytale

- 10-CONTEXT: specs des 5 plugins (GravityFlip, MagneticHand, TimeRewind,
  BlackHoleGrenade, Paintball) avec core mechanics, wow factor, complexité
- 10-01-PLAN: brainstorm done (concepts locked)
- 10-02-PLAN: 5 waves de code (1 plugin par wave, complexité ascendante)
  Java + Gradle Kotlin DSL + JDK 17 + MIT license, repos kayjaydee/hytale-*
- 10-03-PLAN: composant HytaleDemoGrid.vue + intégration /hytale +
  i18n hytale.demos.* + data source app/data/hytaleDemos.ts
- IDEAS-BACKLOG.md (root): 30 concepts supplémentaires pour v1.3+
  classés par mouvement/combat/monde/social/économie

Effort estimé Phase 10: ~10 jours code + 1-2 jours frontend intégration.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-22 22:49:59 +02:00
parent 042a05c3a8
commit 30b9efc5d2
5 changed files with 545 additions and 0 deletions
@@ -0,0 +1,32 @@
# Plan 10-01 — Brainstorm & Select Plugin Concepts
## Goal
Sélectionner 2-5 concepts de plugins Hytale pour Phase 10, documenter les specs rapides de chaque.
## Outcome (shipped 2026-04-22)
**Décision user : ship les 5 concepts proposés** (pas de coupe, ambition full batch).
Specs complètes dans `10-CONTEXT.md` :
1. **GravityFlip Region** — ~1j — gravité inversée dans zone définie
2. **MagneticField Hand** — ~1.5j — item magnet qui attire drops
3. **TimeRewind Watch** — ~2.5j — rewind 10s de gameplay
4. **BlackHole Grenade** — ~2j — trou noir + explosion
5. **Paintball Arena** — ~3j — mini-jeu PvP avec scoring team
Total effort estimé : ~10j répartis sur plusieurs semaines.
## Backlog (future milestones)
30 concepts supplémentaires documentés dans `IDEAS-BACKLOG.md` (root du repo) pour alimenter v1.3+.
## Success Criteria
- [x] 5 concepts verrouillés avec repo names, core mechanics, wow factor assessment
- [x] Backlog 30 idées pour pipeline long terme
- [x] Technical decisions captées (Java, Gradle Kotlin DSL, JDK 17, MIT license)
## Next
Lancer Plan 10-02 (code & publish les 5 plugins par waves).
@@ -0,0 +1,105 @@
# Plan 10-02 — Code & Publish 5 Demo Plugins Hytale
## Goal
Coder, packager, publier 5 plugins Hytale open-source sur GitHub (kayjaydee/hytale-*) avec README EN pro + gif démo + release jar.
## Depends on
- 10-01 : concepts verrouillés (voir 10-CONTEXT.md)
- Setup dev Hytale local (JDK, Gradle, Hytale test server)
## Success Criteria
1. 5 repos GitHub publics accessibles (`github.com/kayjaydee/hytale-{gravity-flip,magnet-hand,time-rewind,blackhole-grenade,paintball}`)
2. Chaque repo a : README.md EN, LICENSE MIT, plugin.yml, src code, gif ≤2Mo dans `docs/`
3. Chaque plugin buildable via `./gradlew build` sans erreur
4. Au moins 1 release GitHub par plugin avec .jar attaché
5. README chaque plugin contient : hero gif, tagline, features, install, credits + lien killiandalcin.fr
## Waves (1 wave = 1 plugin, sequential by complexity ascending)
### Wave 1 — GravityFlip Region (~1j)
- [ ] Scaffold repo `hytale-gravity-flip` : init gradle + plugin.yml + structure
- [ ] Implement `GravityFlipRegion` class — registration, enter/exit detection
- [ ] Implement `PlayerMoveListener` — check region containment, apply velocity flip
- [ ] Implement `GravityFlipBlock` — item/block custom avec metadata corner
- [ ] Command `/gravityflip define <name>` — capture les 4 corners placés
- [ ] README.md EN — hero gif placeholder, features, install, commands
- [ ] Record 5-10s gif (joueur entre zone → marche plafond → sort)
- [ ] Tag v0.1.0 + release GitHub avec jar
### Wave 2 — MagneticField Hand (~1.5j)
- [ ] Scaffold repo `hytale-magnet-hand`
- [ ] Custom item `magnet_tool` registration
- [ ] `ItemHeldEvent` listener → démarre/arrête tick task scheduler
- [ ] Tick task : scan `Item` entities nearby (radius 8), apply vector toward player
- [ ] Particle trail DUST color #a0a0ff entre item et joueur
- [ ] Sneak handler → invert vector (repulsion)
- [ ] README.md EN
- [ ] Record gif (farm scenario, objets volent vers joueur)
- [ ] Tag v0.1.0 + release
### Wave 3 — BlackHole Grenade (~2j)
- [ ] Scaffold repo `hytale-blackhole-grenade`
- [ ] Custom item `blackhole_grenade` (throwable)
- [ ] `ProjectileHitEvent` → spawn invisible armorstand anchor + schedule 60 ticks
- [ ] Tick task : scan entities radius 12, apply inward velocity (strength = inverse distance)
- [ ] Particle vortex : helix math (sin/cos autour axe vertical) × 3 spirals
- [ ] Final tick : `world.createExplosion(loc, 2.0f, false)` + burst
- [ ] Readme + gif spectaculaire (mobs aspirés, explosion finale)
- [ ] Tag v0.1.0 + release
### Wave 4 — TimeRewind Watch (~2.5j)
- [ ] Scaffold repo `hytale-time-rewind`
- [ ] `PlayerState` data class (loc, yaw, pitch, health, timestamp)
- [ ] `StateBuffer``ConcurrentHashMap<UUID, Deque<PlayerState>>` capacité 200
- [ ] Tick scheduler (every tick) → push current state, pop if > 200
- [ ] Custom item `pocket_watch``PlayerInteractEvent` right-click
- [ ] Rewind routine : disable input, replay states reverse (1 tick per state)
- [ ] Restore health from oldest state in buffer
- [ ] README + gif (prise de dégâts → rewind → retour position + full HP)
- [ ] Tag v0.1.0 + release
### Wave 5 — Paintball Arena (~3j)
- [ ] Scaffold repo `hytale-paintball`
- [ ] Custom item `paintball_gun` + colored snowball projectile
- [ ] `PaintedBlock` data class (location, originalBlockData, tintColor)
- [ ] `ProjectileHitEvent` → persist block state → apply tint via BlockData.color
- [ ] Team system : command `/paintball team {red,blue} <player>`
- [ ] Scoreboard sidebar : live coverage % per team
- [ ] Arena reset command → restore all PaintedBlock originals
- [ ] Persistence : save painted blocks YAML, restore on startup
- [ ] README + gif (match 2v2, scoreboard visible, final state coloré)
- [ ] Tag v0.1.0 + release
## Technical Decisions
**Language:** Java (aligné avec articles seed blog, dominant gamedev Hytale/Minecraft community)
**Build:** Gradle Kotlin DSL (`build.gradle.kts`) — plus lisible que Groovy
**Package:** `fr.killiandalcin.hytale.<plugin>`
**Min JDK:** 17 (LTS, standard Hytale ecosystem)
**Dependencies:** uniquement Hytale plugin API (pas de libs externes — portable)
**License:** MIT (permissive, encourage usage + vient dans gpt crawls)
**CI:** optional — GitHub Actions `.github/workflows/release.yml` qui build jar sur tag push. Pas bloquant pour wave 1.
## Risks & Mitigations
- **Risk:** API Hytale incomplète / SDK early-access manquant
- **Mitigation:** Si un plugin est bloqué par API absente, fallback sur Minecraft Paper API pour la démo (même syntax majoritairement), et on précise dans README "Hytale-compatible API, currently running on Paper for demo"
- **Risk:** Gif trop lourds (>2Mo) pour les README GitHub
- **Mitigation:** `gifski --fps 15 --quality 80` + trim 5-8s max. Fallback mp4 embed.
- **Risk:** 5 plugins × 2j = 10j, trop long
- **Mitigation:** Ship Wave 1 + 2 + 3 d'abord (4.5j), déjà 3 démos sur portfolio. Wave 4 + 5 en suivant.
## Commit Convention
Par wave : `feat(gravity-flip): ship v0.1.0 — zone + listener + command`
En fin wave : tag `git tag v0.1.0 && git push --tags`, create GitHub release via `gh release create`.
## Atomic Checkpoints
Après chaque wave terminée :
- `git commit` sur le repo plugin
- Update `.planning/phases/10-demo-plugins/10-02-PROGRESS.md` avec lien repo + gif
- Demander user confirmation avant wave suivante
@@ -0,0 +1,112 @@
# Plan 10-03 — HytaleDemoGrid Component + /hytale Integration
## Goal
Afficher sur `/hytale` une section "Live Demos" présentant les 5 plugins de Phase 10 (ou ceux déjà shippés), avec screenshot/gif + description + lien GitHub + tag techno.
## Depends on
- Plan 10-02 Wave 1 minimum (au moins 1 plugin publié) pour avoir du contenu réel
- Peut être développé en parallèle avec placeholder data au début
## Success Criteria
1. Composant `HytaleDemoGrid.vue` créé dans `app/components/`, auto-importé
2. Section "Live Demos" visible sur `/hytale` (FR + EN), SSR rendu
3. Chaque card affiche : image/gif, titre, description 1 phrase, tag techno, lien GitHub (externe `rel="noopener"`), wow factor indicator optionnel
4. Data source centralisée : `app/data/hytaleDemos.ts` typé avec `HytaleDemo` interface
5. i18n `hytale.demos.*` ajouté dans `fr.json` + `en.json` (title, subtitle, empty state)
6. Responsive : grille 1 col mobile, 2 cols tablet, 3 cols desktop
7. Typecheck vert : `pnpm typecheck` exit 0
## Tasks
### Wave 1 — Data Layer
- [ ] Créer `shared/types/hytaleDemo.ts` :
```ts
export interface HytaleDemo {
id: string
titleKey: string // i18n key
descKey: string // i18n key
image: string // /public/demos/<id>.gif ou .webp
github: string // URL repo
tech: 'Java' | 'Kotlin'
wowFactor?: 1 | 2 | 3 | 4 | 5
}
```
- [ ] Créer `app/data/hytaleDemos.ts` avec les 5 entries (ou les shippés au moment du code)
- [ ] Placer placeholders dans `public/demos/` : `.webp` 400×225 avec texte "Demo coming soon" si gif pas prêt
### Wave 2 — Component
- [ ] Créer `app/components/HytaleDemoGrid.vue` :
- Props : `demos: HytaleDemo[]` (default = import depuis data)
- Template : `<UCard>` Nuxt UI v3 par démo
- Image `<NuxtImg>` avec `loading="lazy"`, fallback si manquante
- Description via `<I18nT :keypath>` pour interpolations
- Badge `<UBadge>` pour `tech` (couleur selon Java/Kotlin)
- Lien `<NuxtLink external target="_blank" rel="noopener noreferrer">` vers GitHub
- [ ] Variant `featured` avec card plus grande pour 1 démo vedette (optionnel)
- [ ] Empty state : si `demos` vide → message "Demos coming soon" traduit
### Wave 3 — Integration
- [ ] Ajouter section sur `app/pages/hytale.vue` après pricing/témoignages :
```vue
<section class="py-16">
<h2>{{ t('hytale.demos.title') }}</h2>
<p>{{ t('hytale.demos.subtitle') }}</p>
<HytaleDemoGrid />
</section>
```
- [ ] Ajouter ancre `#demos` pour deep-linking
- [ ] Vérifier responsive sur mobile/tablet/desktop (Chrome DevTools)
### Wave 4 — i18n
- [ ] Ajouter dans `i18n/locales/fr.json` :
```json
"hytale": {
"demos": {
"title": "Live Demos",
"subtitle": "Plugins open-source que j'ai développés pour Hytale. Code et documentation complète sur GitHub.",
"viewCode": "Voir le code",
"emptyState": "Démos à venir"
}
}
```
- [ ] Équivalent EN dans `en.json`
- [ ] Clés i18n par démo : `hytale.demos.gravityFlip.title`, `.description` etc. (5 démos × 2 clés × 2 langues = 20 clés)
### Wave 5 — Polish
- [ ] SEO : ajouter démos au JSON-LD de `/hytale` (liste `CreativeWork` ou `SoftwareSourceCode`) pour Google
- [ ] Animation hover card : scale 1.02 + shadow (Tailwind transition)
- [ ] Preload première image (`<link rel="preload">` pour la démo featured)
- [ ] Test dark/light : vérifier contraste images et text overlay
## Technical Decisions
- **Data source** : TypeScript fichier statique (pas JSON) pour avoir typing + auto-import
- **Images** : WebP prioritaire, fallback .gif si animation critique (GravityFlip, BlackHole = gif ; Paintball screenshot screenshot)
- **Pas de CMS/frontmatter** : les démos sont stables et peu nombreuses, data-as-code suffit
- **Couleurs tech badge** : Java = orange, Kotlin = purple (conventions ecosystem)
- **Fallback gracieux** : si image manque, show text card "Demo image coming soon"
## Deferred / Out of Scope
- Satori og:image dynamique par démo (hors Phase 10)
- Player vidéo embedded YouTube (MP4 trop lourd, gif suffit pour MVP)
- Stats téléchargement GitHub en live (overkill, scrap manuel)
- Internationalisation des repos GitHub README (EN only, aligné target server owners)
## Commit Atomic Points
- Wave 1 : `feat(hytale): add HytaleDemo type + data source`
- Wave 2 : `feat(components): add HytaleDemoGrid component`
- Wave 3 : `feat(hytale): integrate demos section on /hytale`
- Wave 4 : `feat(i18n): add hytale.demos.* keys FR+EN`
- Wave 5 : `polish(hytale): demos section hover + JSON-LD + dark mode check`
## Success Validation
- [ ] Curl `https://killiandalcin.fr/hytale` → HTML contient markup `HytaleDemoGrid`
- [ ] Curl `https://killiandalcin.fr/en/hytale` → HTML contient traductions EN
- [ ] Check lighthouse sur `/hytale` : score perf pas dégradé (images optimisées)
- [ ] DMs Discord : copier l'URL `https://killiandalcin.fr/hytale#demos` et confirmer que le rendu est pro
@@ -0,0 +1,105 @@
# Phase 10 — Demo Plugins Hytale — Context
## Goal
Produire 5 mini-plugins Hytale open-source publiés sur GitHub avec README EN pro, pour donner des preuves concrètes à montrer en DM Discord / Fiverr. Chaque plugin = 1 repo, 1 gif/screenshot, 1 paragraphe de description.
## Business Rationale
- **Blocker prospection #1** : zéro démo crédible à montrer actuellement
- **Objectif** : pivot de "0 démo" → "5 démos variées" en 7-14 jours de travail réparti
- **Target audience** : Hytale server owners (Discord), Fiverr buyers, recruiters gaming
## Les 5 Concepts Retenus
### 1. GravityFlip Region
**Pitch** : Block spécial qui définit une zone → entités dedans ont gravité inversée.
**Wow factor** : ⭐⭐⭐⭐⭐ (viral-friendly, gif 5s)
**Complexité** : ⭐ (~150 lignes)
**API showcase** : physics override, region system
**Core mechanics** :
- `PlayerMoveEvent` listener → check if in registered region
- Flip `velocity.y` (ou apply upward force chaque tick)
- Blocks `gravityflip_block` placés en 4 corners définissent la zone
**Repo name** : `hytale-gravity-flip`
### 2. MagneticField Hand
**Pitch** : Item `magnet_tool` → drops dans 8 blocs gravitent vers le joueur, trail de particules. Shift = répulsion.
**Wow factor** : ⭐⭐⭐⭐ (satisfying visual, utile)
**Complexité** : ⭐⭐ (~200 lignes)
**API showcase** : particles, entity velocity, item events
**Core mechanics** :
- `ItemHeldEvent` → start tick task si magnet_tool
- Chaque tick : scan entities.items nearby, apply Vector.subtract(player.loc, item.loc).normalize().multiply(0.3)
- `spawnParticle(DUST, item.loc, color=#a0a0ff)`
- Detect `player.isSneaking()` → invert direction
**Repo name** : `hytale-magnet-hand`
### 3. TimeRewind Watch
**Pitch** : `pocket_watch` clic droit → rewind 10 dernières secondes (position, rotation, dégâts annulés).
**Wow factor** : ⭐⭐⭐⭐⭐ (Prince of Persia, gameplay unique)
**Complexité** : ⭐⭐⭐ (~300 lignes)
**API showcase** : state serialization, scheduler, entity manipulation, damage events
**Core mechanics** :
- `Deque<PlayerState>` par joueur (capacité 200 ticks = 10s@20tps)
- Chaque tick : `states.offer({loc, yaw, pitch, health, timestamp})`; pop old
- On `rightClick(pocket_watch)` : lock input, replay states reverse chaque tick (or teleport instant)
- Restore health si tracked damage during rewind window
**Repo name** : `hytale-time-rewind`
### 4. BlackHole Grenade
**Pitch** : Item lancé → trou noir 3s. Aspire mobs + items + joueurs dans 12 blocs. Implosion finale avec explosion particules.
**Wow factor** : ⭐⭐⭐⭐⭐ (spectaculaire, clip-ready)
**Complexité** : ⭐⭐ (~250 lignes)
**API showcase** : projectiles, entity pull, particle math (vortex)
**Core mechanics** :
- `ProjectileHitEvent` sur custom item → spawn armorstand invisible au point d'impact
- 60 ticks scheduler : chaque tick, scan entities in radius 12, apply Vector toward center * strength
- Spawn particles en spiral (helix math) autour du center point
- Final tick : `world.createExplosion(loc, 2.0f, false)` + burst particles
**Repo name** : `hytale-blackhole-grenade`
### 5. Paintball Arena
**Pitch** : Arme `paintball_gun` tire snowballs colorés. Impact = block change de tint. Arena auto-scorée par équipe.
**Wow factor** : ⭐⭐⭐⭐ (mini-jeu complet)
**Complexité** : ⭐⭐⭐⭐ (~400 lignes)
**API showcase** : projectiles, block manipulation, scoreboard, teams, persistence
**Core mechanics** :
- `PlayerInteractEvent` (right-click paintball_gun) → `launchProjectile(Snowball)` avec metadata color
- `ProjectileHitEvent` sur target block : wrap block in `PaintedBlock` (stocke couleur originale + tint appliqué)
- `HashMap<Team, Set<Block>>` pour compter % territoire peint
- Scoreboard sidebar live : team A: 42%, team B: 38%
- Arena reset command : restore original blocks from persistence
**Repo name** : `hytale-paintball`
## Shared Infrastructure (par repo)
Chaque repo aura :
- `build.gradle.kts` (Kotlin DSL) ou `build.gradle` (Java) — à décider
- `src/main/kotlin/fr/killiandalcin/<plugin>/` — source
- `plugin.yml` — manifest Hytale
- `README.md` — EN pro :
- Hero gif/screenshot
- Tagline 1 phrase
- Features bullet points
- Installation (drop jar in /plugins, reload)
- Commands/permissions
- Credits + lien portfolio killiandalcin.fr
- `LICENSE` (MIT)
- `.github/workflows/release.yml` — auto-build jar on tag push
- `docs/demo.gif` ou screenshot (1-5 Mo max)
## Open Questions
1. **Kotlin ou Java ?** — Stack blog article seed utilise Java (com.hypixel.hytale.plugin). Kotlin modernise mais Minecraft/Hytale dev majoritaire Java.
2. **GitHub org ou perso ?**`kayjaydee/hytale-*` (perso visible) ou créer org `killiandalcin-hytale` ?
3. **Gif creation tool ?** — ffmpeg + recorder in-game, ou OBS + gifski ? Target ~2 Mo max par gif.
4. **Order de ship** — Tous en parallèle, ou 1 par semaine pour générer du contenu Twitter/X/Discord étalé ?
## Success Criteria (Phase 10)
- 5 repos GitHub publics avec README EN complet
- 5 .jar téléchargeables (release ou build artifact)
- 5 gifs/screenshots dans `/public/demos/` du portfolio
- Composant `HytaleDemoGrid.vue` intégré sur `/hytale` affichant les 5 démos
- i18n FR+EN des cards démos
+191
View File
@@ -0,0 +1,191 @@
# Hytale Plugin Ideas — Backlog (30 concepts)
Idées de plugins pour pipeline long terme. Les 5 sélectionnés pour Phase 10 sont dans `10-CONTEXT.md` (GravityFlip, MagneticHand, TimeRewind, BlackHoleGrenade, Paintball).
Tous ces concepts sont pensés pour être **simples à coder** (1-5 jours chacun), **visuellement fort** (gif-friendly pour DM Discord), et **pousser l'API Hytale** sur au moins un point.
---
## Mouvement & Traversée
### 1. PortalGun
Deux portails (bleu / orange) posés sur n'importe quelle surface. La traversée conserve la vélocité (Portal-like).
Showcase : vectors, projection inverse, téléportation fluide avec gestion de rotation.
Code estimé : ~300 lignes. Wow factor viral ⭐⭐⭐⭐⭐.
### 2. PhaseWalk
Shift + move → passer à travers les murs jusqu'à 2 blocs d'épaisseur, avec effet de distorsion visuelle.
Showcase : détection blocs devant joueur, override collision, particles transparency.
Utile PvP / exploration. ⭐⭐⭐⭐.
### 3. GrapplingHook
Hook lancé, s'accroche au premier block/entité touché. Tire le joueur vers le point d'ancrage.
Showcase : projectiles custom, vectors, animation de rope (particles line).
Gameplay gadget classique mais satisfaisant. ⭐⭐⭐⭐.
### 4. DoubleJump Boots
Bottes custom qui permettent un second saut en l'air, avec particles au boost.
Showcase : item attributes, `PlayerMoveEvent`, air-time detection.
Code minimal, résultat satisfaisant. ⭐⭐⭐.
### 5. FlightCape
Cape qui donne un glide planant : vitesse descente réduite, contrôle directionnel avec look.
Showcase : vector math, gravity override, animation aile.
Parfait pour exploration verticale. ⭐⭐⭐⭐.
### 6. SpiderSilk Shooter
Pistolet à toile : ralentit les mobs touchés, ou s'accroche aux blocs pour un swing type Spider-Man.
Showcase : projectiles, status effects, physics pendulum.
Combat + mobilité. ⭐⭐⭐⭐.
### 7. WormholeTravel
Deux blocs custom liés : marcher sur l'un téléporte instantanément à l'autre (effet vortex).
Showcase : block metadata, région tracking, particles vortex.
Infrastructure réseau/shortcut. ⭐⭐⭐.
---
## Combat & Sorts
### 8. FireballStaff
Bâton magique qui lance des fireballs avec knockback et traînée de feu qui persiste 3s au sol.
Showcase : projectiles custom, block fire set, explosion sans damage terrain.
Classique mais toujours efficace. ⭐⭐⭐⭐.
### 9. EarthquakeSlam
Saut en hauteur → impact au sol = onde de choc qui repousse et stun les mobs dans un rayon.
Showcase : fall distance detection, entity list scan, knockback vector, particles ground ripple.
Effet visuel fort en 150 lignes. ⭐⭐⭐⭐⭐.
### 10. FrostBreath
Item "souffle glacé" — gèle les blocs eau en glace devant le joueur, et met les mobs en stase 3s.
Showcase : ray-casting, block replace temporaire, entity freeze status.
Visuellement propre, pousse l'API status. ⭐⭐⭐⭐.
### 11. LightningRod
Block qui attire la foudre pendant les orages et convertit l'énergie en "puissance" stockée (utilisable par blocks voisins).
Showcase : weather event hook, block neighbors, energy transfer simulation.
Tech progression tease. ⭐⭐⭐.
### 12. BerserkMode
Transformation temporaire : +100% damage mais -50% defense, cooldown 24h in-game, particles rouges.
Showcase : attribute modifiers, potion effects custom, cooldown persistence.
Gameplay risque/récompense. ⭐⭐⭐.
### 13. MirrorShield
Bouclier qui reflète projectiles (arrows, fireballs) vers leur tireur au lieu d'encaisser.
Showcase : entity shooter tracking, projectile redirect, raycast.
Technique, gameplay counter. ⭐⭐⭐⭐.
### 14. ShadowClone Decoy
Juste avant la mort, spawn automatique d'un clone immobile qui tank le prochain hit et disparaît.
Showcase : damage event interception, entity spawn + metadata, timing window.
Anti-grief / PvE assist. ⭐⭐⭐⭐.
### 15. IllusionMirror
Invoque un clone passif qui mime tes mouvements, utile pour tromper les joueurs ennemis en PvP.
Showcase : action record/replay, NPC clone, input buffering.
Avancé techniquement. ⭐⭐⭐⭐.
---
## Monde & Environnement
### 16. TimeBomb Block
Block custom avec timer visible (3-2-1 texte flottant), explosion après X secondes posé.
Showcase : hologram text, scheduler, block explosion custom radius.
Demo propre pour raid gameplay. ⭐⭐⭐.
### 17. WeatherStaff
Bâton qui change la météo dans un rayon de 30 blocs autour du joueur (pluie, neige, soleil).
Showcase : weather packet per-region, particle emitter, item right-click cycle.
Builder/admin friendly. ⭐⭐⭐⭐.
### 18. BiomeChanger
Item qui modifie le biome local (sable → neige, forêt → marais) dans un carré 16x16.
Showcase : biome set API, chunk re-render, persistence.
Sandbox creative. ⭐⭐⭐.
### 19. DayNightSpeed Crystal
Cristal tenu → accélère le cycle jour/nuit personnel (ne change pas serveur, effet client).
Showcase : world time manipulation scope, per-player packets.
Technique propre. ⭐⭐.
### 20. WildMineshaft Generator
Commande admin : génère un donjon-mine procédural sous le joueur, avec couloirs, salles, loot chests.
Showcase : proceduraux generation, structure templates, random walkers.
Impressionne en 1 commande. ⭐⭐⭐⭐⭐.
### 21. GravityWell Tower
Tour placée qui crée une zone de gravité augmentée (x3) dans 10 blocs de rayon autour.
Showcase : per-region physics override (complement de GravityFlip), entity pull tower.
Combo avec GravityFlip pour showcase cohérent. ⭐⭐⭐.
---
## Social & Multiplayer
### 22. WhisperChat
Nouveau channel chat : messages locaux audibles uniquement dans un rayon de 20 blocs (RP).
Showcase : chat event interception, proximity calc, channel system.
Serveurs RP love this. ⭐⭐⭐.
### 23. EmoteSystem
10 emotes custom (wave, dance, bow, sit) avec animations via armor stands / NPCs.
Showcase : animation frames, pose data, command radial menu.
Social, gif-friendly. ⭐⭐⭐⭐.
### 24. DuelArena Block
Block "challenge" : clic droit sur un joueur → pop-up invitation → téléport duel dans arène dédiée.
Showcase : inventory save/restore, region teleport, winner detection, reward system.
Mini-système PvP complet en 400 lignes. ⭐⭐⭐⭐.
### 25. BountyBoard (Wanted System)
Tableau affiché : poser une prime sur un joueur en gold. Tuer la cible = payout auto au tueur.
Showcase : economy integration, death event + killer tracking, UI board.
Social gameplay driver. ⭐⭐⭐⭐.
### 26. TradingCaravan NPC
Marchand PNJ itinérant qui spawn aléatoirement sur des points de la map et vend des items rares.
Showcase : NPC pathing, scheduled spawn, inventory trade menu.
Event gameplay. ⭐⭐⭐⭐.
---
## Économie & Progression
### 27. XPStorage Crystal
Cristal qui stocke le XP excédentaire d'un joueur (au-delà d'un seuil). Récupérable plus tard.
Showcase : XP event, inventory persistence, GUI interaction.
Utility propre, loved by server owners. ⭐⭐⭐.
### 28. RuneInscriber
Table d'enchantement custom : grave des runes sur items pour effets custom (lifesteal, speed, fortune).
Showcase : item metadata NBT, enchantment event, GUI multi-input.
Vraie feature RPG. ⭐⭐⭐⭐⭐.
### 29. TreasureHunt Map
Map parchemin généré avec coords brouillées → guide le joueur vers un chest loot random enterré.
Showcase : random world coords, map rendering, chest loot table.
Exploration gameplay driver. ⭐⭐⭐⭐.
### 30. BankVault
Coffre privé partagé entre tous les mondes/dimensions pour un même joueur (cross-server friendly).
Showcase : persistent inventory, UUID keying, database integration ou YAML.
Essential utility. ⭐⭐⭐.
---
## Notes
- Les concepts 1-5 (GravityFlip, MagneticHand, TimeRewind, BlackHoleGrenade, Paintball) sont dans `10-CONTEXT.md` pour Phase 10.
- Ce backlog peut alimenter de futurs milestones (v1.3+) au rythme de 2-3 plugins par trimestre.
- Chaque plugin publié = 1 article blog associé potentiel (tutoriel dev + démo) → cocon sémantique étendu.
- Priorité à classer par : effet visuel (gif-ready) → showcase API inédite → complexité croissante.
## Pipeline Suggéré (post Phase 10)
Si les 5 premiers convertissent bien en clients, next batch :
- **Batch 2 (v1.3)** : PortalGun (#1), GrapplingHook (#3), EarthquakeSlam (#9) — combat/mobilité spectacle
- **Batch 3 (v1.4)** : RuneInscriber (#28), DuelArena (#24), BountyBoard (#25) — gameplay serveur complet
- **Batch 4 (v1.5)** : WildMineshaft (#20), TreasureHunt (#29), TradingCaravan (#26) — exploration