feat(phase-1): scaffold ChainLightning Sceptre plugin

Build infrastructure (Gradle wrapper, shadow, Java 25), manifest, item
JSON + interactions, and ChainLightningPlugin entry with stub handler
that logs sceptre clicks. Cooldown wiring deferred to Phase 3 (real
Hytale API is getCooldown(id).setCooldownMax — not cooldown(Duration)).
This commit is contained in:
2026-04-26 19:22:18 +02:00
parent d06743acbe
commit edca00fa4a
14 changed files with 656 additions and 0 deletions
+17
View File
@@ -1,3 +1,20 @@
<!-- MYTHLANE:hytale-rules-start -->
## Hytale plugin rules — READ BEFORE WRITING API CODE
Avant d'écrire toute ligne touchant l'API Hytale (au-delà de la logique Java pure / tests JUnit), faire dans l'ordre :
1. **Lire les leçons accumulées** : `C:\Users\minit\Desktop\portfolio\PLUGINS\hytale-gravity-flip\HYTALE-PLUGIN-LEARNINGS.md` — surprises, lessons, discoveries de la prod GravityFlip. C'est l'antidote aux pièges déjà connus (`IncludesAssetPack: true` obligatoire, casse `Server/`, string-ID interactions, `shutdown()` vs `stop()`, etc.).
2. **Grep la source décompilée** : `.tools/decompiled/` contient le `Server-2026.03.26-89796e57b.jar` décompilé via CFR. Pour vérifier la signature exacte d'une méthode/classe :
```bash
grep -rn "class CooldownHandler\|interface CooldownHandler" .tools/decompiled/
grep -rn "public.*registerSystem\|public.*register" .tools/decompiled/com/hypixel/hytale/server/core/
```
**Ne jamais deviner une API** — le décompilé est la source de vérité. La déviation Phase 1 (`CooldownHandler.cooldown(Duration)` n'existait pas — l'API réelle est `getCooldown(String).setCooldownMax(float).resetCooldown()`) aurait été évitée en greppant ici en amont.
3. **Chercher un Interaction builtin similaire** : `.tools/decompiled/com/hypixel/hytale/builtin/.../interactions/*.java` contient des dizaines d'exemples canoniques (`BedInteraction`, `TeleporterInteraction`, `HarvestCropInteraction`, …). Si l'usage est ambigu, copier le pattern d'un voisin builtin.
**Researcher / planner / executor agents :** ces 3 étapes sont obligatoires dès qu'une phase touche au runtime Hytale. Phase 2 (algo pur + JUnit) peut s'en passer ; Phase 3 (runtime intégration) et Phase 4 (particles + son) y sont entièrement soumises.
<!-- MYTHLANE:hytale-rules-end -->
<!-- GSD:project-start source:PROJECT.md -->
## Project