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.
This commit is contained in:
2026-04-22 22:49:59 +02:00
parent 29f4a47ace
commit 4e7c84912a
5 changed files with 545 additions and 0 deletions
@@ -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