From 30b9efc5d291db76617048a20dbd128972a10c1a Mon Sep 17 00:00:00 2001 From: kayjaydee Date: Wed, 22 Apr 2026 22:49:59 +0200 Subject: [PATCH] =?UTF-8?q?docs(10):=20plan=20Phase=2010=20=E2=80=94=205?= =?UTF-8?q?=20demo=20plugins=20Hytale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- .../phases/10-demo-plugins/10-01-PLAN.md | 32 +++ .../phases/10-demo-plugins/10-02-PLAN.md | 105 ++++++++++ .../phases/10-demo-plugins/10-03-PLAN.md | 112 ++++++++++ .../phases/10-demo-plugins/10-CONTEXT.md | 105 ++++++++++ IDEAS-BACKLOG.md | 191 ++++++++++++++++++ 5 files changed, 545 insertions(+) create mode 100644 .planning/phases/10-demo-plugins/10-01-PLAN.md create mode 100644 .planning/phases/10-demo-plugins/10-02-PLAN.md create mode 100644 .planning/phases/10-demo-plugins/10-03-PLAN.md create mode 100644 .planning/phases/10-demo-plugins/10-CONTEXT.md create mode 100644 IDEAS-BACKLOG.md diff --git a/.planning/phases/10-demo-plugins/10-01-PLAN.md b/.planning/phases/10-demo-plugins/10-01-PLAN.md new file mode 100644 index 0000000..5c7f31f --- /dev/null +++ b/.planning/phases/10-demo-plugins/10-01-PLAN.md @@ -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). diff --git a/.planning/phases/10-demo-plugins/10-02-PLAN.md b/.planning/phases/10-demo-plugins/10-02-PLAN.md new file mode 100644 index 0000000..596ded4 --- /dev/null +++ b/.planning/phases/10-demo-plugins/10-02-PLAN.md @@ -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 ` — 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>` 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} ` +- [ ] 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.` +**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 diff --git a/.planning/phases/10-demo-plugins/10-03-PLAN.md b/.planning/phases/10-demo-plugins/10-03-PLAN.md new file mode 100644 index 0000000..377d8d5 --- /dev/null +++ b/.planning/phases/10-demo-plugins/10-03-PLAN.md @@ -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/.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 : `` Nuxt UI v3 par démo + - Image `` avec `loading="lazy"`, fallback si manquante + - Description via `` pour interpolations + - Badge `` pour `tech` (couleur selon Java/Kotlin) + - Lien `` 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 +
+

{{ t('hytale.demos.title') }}

+

{{ t('hytale.demos.subtitle') }}

+ +
+ ``` +- [ ] 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 (`` 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 diff --git a/.planning/phases/10-demo-plugins/10-CONTEXT.md b/.planning/phases/10-demo-plugins/10-CONTEXT.md new file mode 100644 index 0000000..821572b --- /dev/null +++ b/.planning/phases/10-demo-plugins/10-CONTEXT.md @@ -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` 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>` 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//` — 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 diff --git a/IDEAS-BACKLOG.md b/IDEAS-BACKLOG.md new file mode 100644 index 0000000..48ca76c --- /dev/null +++ b/IDEAS-BACKLOG.md @@ -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