Compare commits
201 Commits
c5bcafce2f
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 33bbb7a3b9 | |||
| 5ae226bbf2 | |||
| 4d19835f5d | |||
| d5dbbb6dff | |||
| 0d238c5b0d | |||
| 133f7fdaa3 | |||
| 0994260641 | |||
| 1810e3ed3d | |||
| 7ce378a419 | |||
| 72e25d9406 | |||
| 4e7c84912a | |||
| 29f4a47ace | |||
| 237e7c06af | |||
| b424a2deed | |||
| e44175b9e4 | |||
| 37b87b4b54 | |||
| a4fd4e78d2 | |||
| eb3553753a | |||
| fc7392ee1a | |||
| 1d30828a6f | |||
| b8ddd8e14e | |||
| 6eb81b1f5b | |||
| 078e1a8a5f | |||
| 5c10c275b1 | |||
| bb0ddcfa38 | |||
| 0ba23acd1b | |||
| 7acea07812 | |||
| c0308edc2d | |||
| 2d004b15a7 | |||
| 5eb494278d | |||
| 9cc1dbec5d | |||
| 9d6ed1780b | |||
| 32609a9843 | |||
| 110c2dff86 | |||
| 6956155ce9 | |||
| ae274e77ca | |||
| 306e7bb12f | |||
| 2582c87df4 | |||
| d37f870f49 | |||
| d2ab5681da | |||
| b69252c556 | |||
| 44fcca6345 | |||
| 1a2cfc360b | |||
| 2ec6a213f0 | |||
| 543bcb00fb | |||
| 43d52a42e9 | |||
| 0577cc4041 | |||
| a9c9aef9b8 | |||
| 275d8f268c | |||
| 71ab4f29d0 | |||
| a6bb9463dd | |||
| 42369a1cb4 | |||
| be532c545d | |||
| a6582885a2 | |||
| 39dfef5c5a | |||
| 36aaa3c9d6 | |||
| d8a1d82376 | |||
| eca3e1d0b6 | |||
| 68f55d4157 | |||
| f05cdebbcf | |||
| 0752468f07 | |||
| 64dfe376bf | |||
| b5fe5deed5 | |||
| 28a84e0b64 | |||
| b56c607a00 | |||
| 61daa96663 | |||
| d1ac5f9ee6 | |||
| 2d3974ea2c | |||
| 8915340ca8 | |||
| df9d70f15c | |||
| 1864c13cbb | |||
| c1ab4e1cfb | |||
| eb3db1b4df | |||
| 7ee0a29056 | |||
| 7db3aae52c | |||
| f89d3f769c | |||
| f0bf0a989c | |||
| 3c8470b738 | |||
| 388c05a3a2 | |||
| 36e7e14d7f | |||
| c6320760fb | |||
| 2b8aa6d377 | |||
| fb9491dc62 | |||
| 0fe5b545ad | |||
| ed384ec970 | |||
| 9f5e2e169e | |||
| 81eda7e37e | |||
| 4269bcb4ea | |||
| 5db7a99213 | |||
| 1810a6e121 | |||
| 5c35d13d3e | |||
| 9848338619 | |||
| 36cd7f11aa | |||
| 52d49dce71 | |||
| ca3f257bb7 | |||
| 49f7e70c9d | |||
| e46912d197 | |||
| d9a035c6b4 | |||
| 8f4c6d01fd | |||
| 871ee8ed62 | |||
| 65bd95b441 | |||
| d2d754f85b | |||
| a10a438d03 | |||
| 7da168843c | |||
| dba0d6c3ac | |||
| 6762990e61 | |||
| 29c1dff759 | |||
| 841851ae85 | |||
| 178acfccb9 | |||
| 0de0f85a09 | |||
| c0724e8537 | |||
| 468661e5ec | |||
| a512d3a451 | |||
| df770e5dc8 | |||
| 14721487e3 | |||
| ed51412d5a | |||
| 0a18b29566 | |||
| 3a09d28bba | |||
| 85fe859612 | |||
| 4fc78bd414 | |||
| 308f1a3179 | |||
| d7afd0fedc | |||
| e16aa67343 | |||
| ca3b60b0ad | |||
| c859a9feb8 | |||
| 2edb8b5ff3 | |||
| ec6326d2bf | |||
| 077b5a911d | |||
| 985e29a743 | |||
| fd17ac3915 | |||
| 1ec6fbcce4 | |||
| 6f3b474148 | |||
| 137041b0a3 | |||
| 6b828aff67 | |||
| 355df8dbbe | |||
| 578a0afa1a | |||
| bd7e02f6ce | |||
| 1cdddb7cf4 | |||
| ef9ceeae17 | |||
| 5565940d3c | |||
| eebcb446e8 | |||
| c4a7083f79 | |||
| 8adcd19dbe | |||
| 4f5a8a821f | |||
| 11ace3dca4 | |||
| 8443f590b7 | |||
| 72fc84e2ef | |||
| bc7cdacf80 | |||
| bd78920ddf | |||
| 59495cabf3 | |||
| 3f5d432a39 | |||
| 9a1be02c6c | |||
| 5502364e77 | |||
| 222fa069fd | |||
| b5420b3902 | |||
| e5e14ef362 | |||
| 049b1f0f81 | |||
| e6c6295aaa | |||
| 9e0149d49d | |||
| 0697dbcfe6 | |||
| 3c40051ca9 | |||
| c27141b51f | |||
| d2916e60bc | |||
| 836c2a462c | |||
| 76a2772951 | |||
| 3566b91fe6 | |||
| 2332c69557 | |||
| d424084b46 | |||
| c320085435 | |||
| 61925c3c4d | |||
| 57f60e4bdc | |||
| 7f767154b3 | |||
| 8a49a7fc88 | |||
| 69794e4bd9 | |||
| 7cf1366649 | |||
| 068cc37397 | |||
| 87cbad25c1 | |||
| 55497fe001 | |||
| 5db163a9b1 | |||
| ae7ca3a34b | |||
| 603b403cbb | |||
| 1254db7c8a | |||
| 4fa965628a | |||
| c5de7de3e4 | |||
| 0c1392677c | |||
| 1b54d4463f | |||
| 427270f972 | |||
| adba594f52 | |||
| 3b7c7dbbbd | |||
| 71e6b90a04 | |||
| f50d4b0e6f | |||
| 47c816d5c0 | |||
| 4b8995268a | |||
| 2285875218 | |||
| fa143af729 | |||
| cfb3fce2e1 | |||
| d139605704 | |||
| 2db890708e | |||
| 9fb4505bb2 | |||
| 01b0c13250 | |||
| 1704da8ce5 |
@@ -13,3 +13,33 @@
|
|||||||
- i18n bilingue FR/EN audit complet
|
- i18n bilingue FR/EN audit complet
|
||||||
- Dockerfile SSR pnpm, rate limiting contact form
|
- Dockerfile SSR pnpm, rate limiting contact form
|
||||||
- Déployé en production sur killiandalcin.fr
|
- Déployé en production sur killiandalcin.fr
|
||||||
|
|
||||||
|
## M1.1 — SEO Hytale — Autorité & Contenu
|
||||||
|
|
||||||
|
**Version:** v1.1
|
||||||
|
**Completed:** 2026-04-22 (partial — Phase 8 composant HytaleRecentArticles reporté en M1.2)
|
||||||
|
**Phases:** 4 (5–8), Plans 17/18
|
||||||
|
**Archive:** [v1.1-ROADMAP.md](./milestones/v1.1-ROADMAP.md) · [v1.1-REQUIREMENTS.md](./milestones/v1.1-REQUIREMENTS.md)
|
||||||
|
|
||||||
|
**Delivered:**
|
||||||
|
- Blog markdown bilingue FR/EN (@nuxt/content v3 + Shiki)
|
||||||
|
- Page `/blog` listing + `/blog/[slug]` SSR avec TOC et prev/next
|
||||||
|
- SEO par article : useSeoMeta enrichi, JSON-LD Article/Breadcrumb/CollectionPage, og:image résolu
|
||||||
|
- Sitemap dynamique avec hreflang x-default (endpoint Nitro)
|
||||||
|
- 2 articles seed Hytale publiés FR+EN (API Java réelle `com.hypixel.hytale.plugin`)
|
||||||
|
|
||||||
|
**Carried to M1.2:** Composant HytaleRecentArticles (finalisation cocon sémantique — Phase 11)
|
||||||
|
|
||||||
|
## M1.2 — Ship to Prod + Credibility Gap
|
||||||
|
|
||||||
|
**Version:** v1.2
|
||||||
|
**Started:** 2026-04-22
|
||||||
|
**Status:** Active
|
||||||
|
**Phases:** 3 (9–11), Plans: 6
|
||||||
|
|
||||||
|
**Goal:** Débloquer la prospection active en déployant M1.1 en prod, combler le gap crédibilité (démos plugins open-source), finaliser cohérence branding Hytale.
|
||||||
|
|
||||||
|
**Planned:**
|
||||||
|
- Phase 9 : Deploy prod via Portainer (M1.1 live sur killiandalcin.fr)
|
||||||
|
- Phase 10 : 2-3 mini-plugins Hytale open-source (GitHub public + README EN + section Live Demos sur `/hytale`)
|
||||||
|
- Phase 11 : Fix JSON-LD `index.vue` (REBRAND-01..03) + composant `HytaleRecentArticles` (COCON-01)
|
||||||
|
|||||||
+26
-18
@@ -8,16 +8,27 @@ Portfolio professionnel de Killian' Dalcin, developpeur freelance specialise en
|
|||||||
|
|
||||||
Le portfolio doit positionner Killian comme LE developpeur de plugins Hytale professionnel — pas un "dev web freelance generique" perdu parmi 500 000 autres. Chaque page doit etre crawlable sans JavaScript (SSR), avec un SEO optimise pour le marche Hytale.
|
Le portfolio doit positionner Killian comme LE developpeur de plugins Hytale professionnel — pas un "dev web freelance generique" perdu parmi 500 000 autres. Chaque page doit etre crawlable sans JavaScript (SSR), avec un SEO optimise pour le marche Hytale.
|
||||||
|
|
||||||
## Current Milestone: v1.1 — SEO Hytale — Autorité & Contenu
|
## Current State
|
||||||
|
|
||||||
**Goal:** Dominer les requêtes Hytale sur Google via un blog markdown complet (tutos, guides, news) combiné à un SEO on-page renforcé — deux leviers pour ranker sur les mots-clés directs ET capter le trafic longue traîne.
|
**Active:** v1.2 (started 2026-04-22) — Ship to Prod + Credibility Gap
|
||||||
|
- Ship-first : déployer M1.1 en prod (blog/SEO/sitemap pas encore live)
|
||||||
|
- Combler le gap crédibilité : 2-3 plugins Hytale démo open-source (effet wahou)
|
||||||
|
- Finaliser cohérence branding : fix JSON-LD homepage, HytaleRecentArticles, audit jobTitle
|
||||||
|
|
||||||
**Target features:**
|
**Shipped:**
|
||||||
- Blog markdown avec renderer complet (syntax highlighting, images, embeds, tables, alerts)
|
- v1.1 (2026-04-22) — SEO Hytale — Autorité & Contenu (blog bilingue, JSON-LD, sitemap hreflang)
|
||||||
- Articles Hytale bilingues FR/EN (tutos, guides, contenus communauté)
|
- v1.0 (2026-04-21) — Portfolio Hytale-first SSR déployé
|
||||||
- SEO par article : JSON-LD Article, og:image, canonical, sitemap étendu
|
|
||||||
- Cocon sémantique : liens internes blog ↔ page /hytale
|
Voir `.planning/milestones/` pour archives.
|
||||||
- Open Graph peaufiné par article
|
|
||||||
|
## Why v1.2 Now
|
||||||
|
|
||||||
|
Le portfolio est prêt techniquement mais :
|
||||||
|
1. M1.1 n'est pas déployée en prod → SEO Hytale invisible
|
||||||
|
2. Zéro démo plugin concret à montrer en DM Discord (blocker business #1 selon plan stratégique)
|
||||||
|
3. Incohérence JSON-LD `index.vue` (encore "Developpeur Full Stack")
|
||||||
|
|
||||||
|
Objectif : débloquer la prospection active (5-10h/sem Discord + DMs) qui vient après.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
@@ -36,16 +47,13 @@ Le portfolio doit positionner Killian comme LE developpeur de plugins Hytale pro
|
|||||||
- ✓ useSeoMeta() par route avec title, description, og:tags bilingues — existant
|
- ✓ useSeoMeta() par route avec title, description, og:tags bilingues — existant
|
||||||
- ✓ Dockerfile SSR multi-stage node:22-alpine — existant
|
- ✓ Dockerfile SSR multi-stage node:22-alpine — existant
|
||||||
|
|
||||||
### Active
|
### Active (v1.2)
|
||||||
|
|
||||||
- [ ] Refonte Hero — positionner "Hytale Plugin Developer" en premier plan, pas "Full Stack Developer"
|
- [ ] **DEPLOY**: Pull image autobuild Portainer → M1.1 live sur killiandalcin.fr (blog, sitemap, JSON-LD)
|
||||||
- [ ] Page Hytale dediee — services plugin dev, demos (placeholders), offre maintenance recurrente
|
- [ ] **DEMO-1**: 2-3 mini-plugins Hytale open-source, simples à coder mais effet wahou (GitHub public + README EN)
|
||||||
- [ ] Section pricing/services — grille tarifaire visible (plugin simple, complexe, sur-mesure, maintenance, web)
|
- [ ] **DEMO-2**: Section "Live Demos" sur `/hytale` listant les plugins démo (screenshots, lien GitHub, lien code)
|
||||||
- [ ] Temoignages clients — section avis sur page d'accueil et page Hytale
|
- [ ] **REBRAND**: Fix JSON-LD `app/pages/index.vue` (Developpeur Full Stack → Hytale Plugin Developer) + audit cohérence jobTitle toutes pages
|
||||||
- [ ] Audit et correction i18n — traductions FR/EN completes et naturelles (certaines traductions sont approximatives)
|
- [ ] **COCON**: Composant `HytaleRecentArticles` sur `/hytale` (tire derniers articles blog, renforce maillage interne)
|
||||||
- [ ] Correction concerns codebase — og:image hardcodee, sitemap statique obsolete, email validation serveur, flowboard features non-i18n
|
|
||||||
- [ ] Page 404 personnalisee — verifier que error.vue fonctionne correctement avec i18n
|
|
||||||
- [ ] SEO consolide — canonical links, ogUrl par page, og:image dynamique par projet
|
|
||||||
|
|
||||||
### Out of Scope
|
### Out of Scope
|
||||||
|
|
||||||
@@ -94,4 +102,4 @@ Le portfolio doit positionner Killian comme LE developpeur de plugins Hytale pro
|
|||||||
This document evolves at phase transitions and milestone boundaries.
|
This document evolves at phase transitions and milestone boundaries.
|
||||||
|
|
||||||
---
|
---
|
||||||
*Last updated: 2026-04-10 after initialization*
|
*Last updated: 2026-04-22 — M1.2 bootstrap*
|
||||||
|
|||||||
+34
-41
@@ -1,9 +1,38 @@
|
|||||||
# Requirements: Portfolio Killian' Dalcin
|
# Requirements: Portfolio Killian' Dalcin
|
||||||
|
|
||||||
**Defined:** 2026-04-10
|
**Defined:** 2026-04-10
|
||||||
**Updated:** 2026-04-21 (v1.1 added)
|
**Updated:** 2026-04-22 (v1.2 active)
|
||||||
**Core Value:** Positionner Killian comme dev Hytale #1, crawlable sans JS, SEO optimise
|
**Core Value:** Positionner Killian comme dev Hytale #1, crawlable sans JS, SEO optimise
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v1.2 Requirements (M1.2 — Active) — Ship to Prod + Credibility Gap
|
||||||
|
|
||||||
|
**Goal:** Débloquer la prospection active en déployant M1.1 en prod + combler le gap crédibilité (démos plugins) + finaliser cohérence branding.
|
||||||
|
|
||||||
|
### Deploy — Ship M1.1 to Production
|
||||||
|
|
||||||
|
- [x] **DEPLOY-02**: Pull image autobuild via Portainer sur killiandalcin.fr — M1.1 (blog bilingue, sitemap hreflang, JSON-LD Article) live en prod — shipped 2026-04-22
|
||||||
|
- [x] **DEPLOY-03**: Smoke test prod — `/blog` répond 200, M1.1 live sur killiandalcin.fr — shipped 2026-04-22
|
||||||
|
|
||||||
|
### Demo Plugins — Credibility Gap
|
||||||
|
|
||||||
|
- [ ] **DEMO-01**: 2-3 mini-plugins Hytale open-source publiés sur GitHub — critères : simples à coder (1-3j chacun), effet wahou visuel, poussent Hytale au max de ses capacités. Chaque repo avec README EN pro (installation, features, screenshots/gif).
|
||||||
|
- [ ] **DEMO-02**: Section "Live Demos" sur `/hytale` — liste les plugins démo avec screenshot/gif, description 1-2 phrases, lien GitHub, tag techno (Java/Kotlin). Composant `HytaleDemoGrid.vue`.
|
||||||
|
- [ ] **DEMO-03**: Recherche + idéation plugins — choix des 2-3 concepts (brainstorm guidé, critères : feasibility 1-3j, wow factor, showcase API Hytale avancée)
|
||||||
|
|
||||||
|
### Rebranding — Cohérence SEO
|
||||||
|
|
||||||
|
- [x] **REBRAND-01**: Fix JSON-LD `app/pages/index.vue` — utilise `siteConfig.jobTitle` (Hytale Plugin Developer). Shipped 2026-04-22.
|
||||||
|
- [x] **REBRAND-02**: Audit cohérence jobTitle — 14 clés i18n FR+EN réécrites (a11y, seo, home.cta2, about, contact, projects). 2 occurrences "full stack" restantes contextuelles (skills). `nuxt.config.ts site.name` + `app/data/site.ts description` fixés. Shipped 2026-04-22.
|
||||||
|
- [x] **REBRAND-03**: Meta descriptions + og:title toutes pages alignés sur positionnement Hytale (via i18n seo.* refondu). Shipped 2026-04-22.
|
||||||
|
|
||||||
|
### Cocon Sémantique — Finalisation M1.1 Phase 8
|
||||||
|
|
||||||
|
- [x] **COCON-01**: Composant `HytaleRecentArticles.vue` live sur `/hytale.vue:38` — queryCollection bilingue FR/EN, filter tag hytale JS-side (D-11 LIKE JSON unreliable), slice 2 articles, i18n `hytale.recentArticles.*` présent FR+EN. Shipped avec M1.1 (Phase 8 reporté).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## v1 Requirements (M1 — Complété 2026-04-21)
|
## v1 Requirements (M1 — Complété 2026-04-21)
|
||||||
|
|
||||||
### Content
|
### Content
|
||||||
@@ -42,32 +71,10 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## v1.1 Requirements (M1.1 — SEO Hytale — Autorité & Contenu)
|
## v1.1 Requirements (M1.1 — Shipped 2026-04-22)
|
||||||
|
|
||||||
### Blog — Système
|
All 13 requirements (BLOG-01..07, SEO-10..15) validated and shipped.
|
||||||
|
→ See archived: [v1.1-REQUIREMENTS.md](./milestones/v1.1-REQUIREMENTS.md)
|
||||||
- [ ] **BLOG-01**: Intégration `@nuxt/content` ou équivalent — renderer markdown complet (syntax highlighting, images, embeds, tables, callouts/alerts)
|
|
||||||
- [ ] **BLOG-02**: Page listing `/blog` — liste de tous les articles avec titre, description, date, tags, SSR
|
|
||||||
- [ ] **BLOG-03**: Page article `/blog/[slug]` — rendu SSR complet, table des matières, navigation prev/next
|
|
||||||
- [ ] **BLOG-04**: Blocs de code avec syntax highlighting (Kotlin, Java, TypeScript, Shell prioritaires pour Hytale)
|
|
||||||
- [ ] **BLOG-05**: Support images dans articles — images optimisées avec `<NuxtImg>` ou `<nuxt-img>`
|
|
||||||
|
|
||||||
### Blog — Contenu
|
|
||||||
|
|
||||||
- [ ] **BLOG-06**: Articles bilingues FR/EN — structure i18n dans le système de contenu
|
|
||||||
- [ ] **BLOG-07**: Au moins 2 articles seed Hytale au lancement (ex: "How to build your first Hytale plugin", "Hytale plugin development in 2026")
|
|
||||||
|
|
||||||
### SEO — Blog
|
|
||||||
|
|
||||||
- [ ] **SEO-10**: `useSeoMeta()` par article — title, description, og:title, og:description, og:image uniques
|
|
||||||
- [ ] **SEO-11**: JSON-LD `Article` par billet de blog — author, datePublished, dateModified, headline
|
|
||||||
- [x] **SEO-12**: Sitemap étendu — URLs `/blog/[slug]` et `/en/blog/[slug]` incluses automatiquement
|
|
||||||
- [ ] **SEO-13**: Open Graph image par article — og:image spécifique (image de l'article ou fallback branded)
|
|
||||||
|
|
||||||
### SEO — Cocon sémantique
|
|
||||||
|
|
||||||
- [ ] **SEO-14**: Liens internes structurés — articles de blog pointent vers `/hytale`, page `/hytale` liste les articles récents
|
|
||||||
- [ ] **SEO-15**: BreadcrumbList JSON-LD sur les pages blog (Accueil → Blog → Article)
|
|
||||||
|
|
||||||
## Future Requirements (backlog)
|
## Future Requirements (backlog)
|
||||||
|
|
||||||
@@ -90,18 +97,4 @@
|
|||||||
|
|
||||||
## Traceability v1.1
|
## Traceability v1.1
|
||||||
|
|
||||||
| Requirement | Phase | Status |
|
All v1.1 requirements shipped — see [v1.1-REQUIREMENTS.md](./milestones/v1.1-REQUIREMENTS.md) for phase mapping and outcomes.
|
||||||
|-------------|-------|--------|
|
|
||||||
| BLOG-01 | Phase 5 | Pending |
|
|
||||||
| BLOG-04 | Phase 5 | Pending |
|
|
||||||
| BLOG-05 | Phase 5 | Pending |
|
|
||||||
| BLOG-02 | Phase 6 | Pending |
|
|
||||||
| BLOG-03 | Phase 6 | Pending |
|
|
||||||
| BLOG-06 | Phase 6 | Pending |
|
|
||||||
| SEO-10 | Phase 7 | Pending |
|
|
||||||
| SEO-11 | Phase 7 | Pending |
|
|
||||||
| SEO-12 | Phase 7 | Done (07-04) |
|
|
||||||
| SEO-13 | Phase 7 | Pending |
|
|
||||||
| SEO-15 | Phase 7 | Pending |
|
|
||||||
| BLOG-07 | Phase 8 | Pending |
|
|
||||||
| SEO-14 | Phase 8 | Pending |
|
|
||||||
|
|||||||
+45
-21
@@ -97,24 +97,14 @@ Plans:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Roadmap: Portfolio Killian' Dalcin — M1.1
|
# Archived Milestones
|
||||||
|
|
||||||
**Milestone:** M1.1 — SEO Hytale — Autorité & Contenu
|
- **M1.1 — SEO Hytale — Autorité & Contenu** — ✅ Shipped 2026-04-22 (phases 5–8, 13 plans) — see [v1.1-ROADMAP.md](./milestones/v1.1-ROADMAP.md)
|
||||||
**Granularity:** Standard
|
|
||||||
**Coverage:** 13/13 requirements mapped
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Phases (M1.1)
|
<details>
|
||||||
|
<summary>M1.1 phase details (collapsed)</summary>
|
||||||
- [x] **Phase 5: @nuxt/content Setup & Renderer** - Integration @nuxt/content, markdown renderer complet avec syntax highlighting et images — Completed 2026-04-22 (2/2 plans)
|
|
||||||
- [x] **Phase 6: Blog Pages** - Page listing /blog et page article /blog/[slug] SSR, bilingue, avec TOC et nav prev/next — Completed 2026-04-22 (4/4 plans)
|
|
||||||
- [x] **Phase 7: SEO Blog** - useSeoMeta par article, JSON-LD Article, sitemap etendu, og:image, BreadcrumbList — Completed 2026-04-22 (4/4 plans)
|
|
||||||
- [x] **Phase 8: Content & Cocon Semantique** - 2 articles seed Hytale, liens internes blog-hytale — Completed 2026-04-22 (3/3 plans)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Phase Details (M1.1)
|
|
||||||
|
|
||||||
### Phase 5: @nuxt/content Setup & Renderer
|
### Phase 5: @nuxt/content Setup & Renderer
|
||||||
**Goal**: Le systeme de contenu markdown est installe et rend fidelement le contenu technique — blocs de code colores, images optimisees, tables, alerts — sans configuration supplementaire dans les phases suivantes
|
**Goal**: Le systeme de contenu markdown est installe et rend fidelement le contenu technique — blocs de code colores, images optimisees, tables, alerts — sans configuration supplementaire dans les phases suivantes
|
||||||
@@ -184,11 +174,45 @@ Plans:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Progress (M1.1)
|
</details>
|
||||||
|
|
||||||
| Phase | Plans Complete | Status | Completed |
|
---
|
||||||
|-------|----------------|--------|-----------|
|
|
||||||
| 5. @nuxt/content Setup & Renderer | 2/2 | Complete | 2026-04-22 |
|
## M1.2 — Ship to Prod + Credibility Gap (Active)
|
||||||
| 6. Blog Pages | 4/4 | Complete | 2026-04-22 |
|
|
||||||
| 7. SEO Blog | 4/4 | Complete | 2026-04-22 |
|
**Version:** v1.2
|
||||||
| 8. Content & Cocon Semantique | 3/3 | Complete | 2026-04-22 |
|
**Started:** 2026-04-22
|
||||||
|
**Goal:** Déployer M1.1 en prod + combler le gap crédibilité (démos plugins) + cohérence branding. Débloque la prospection active qui suit.
|
||||||
|
**Phases:** 3 (9–11)
|
||||||
|
|
||||||
|
### Phase 9: Deploy Production ✅ (shipped 2026-04-22)
|
||||||
|
**Goal**: M1.1 est live sur killiandalcin.fr — blog bilingue, sitemap hreflang, JSON-LD Article accessibles en prod
|
||||||
|
**Outcome**: Shipped. Bug build hang (nuxt/nuxt#33987) fixé via `hooks.close: () => process.exit(0)` dans nuxt.config.ts.
|
||||||
|
**Requirements**: DEPLOY-02 ✅, DEPLOY-03 ✅
|
||||||
|
**Plans:** 1 plan
|
||||||
|
Plans:
|
||||||
|
- [x] 09-01-PLAN.md — Pull image autobuild Portainer + smoke test prod (blog, sitemap, JSON-LD, og:image)
|
||||||
|
|
||||||
|
### Phase 10: Demo Plugins Hytale
|
||||||
|
**Goal**: 2-3 mini-plugins Hytale open-source publiés sur GitHub avec section "Live Demos" sur `/hytale` — donnent une preuve crédible à montrer en DM Discord
|
||||||
|
**Depends on**: Phase 9 (pas techniquement, mais prospection = après déploiement)
|
||||||
|
**Requirements**: DEMO-01, DEMO-02, DEMO-03
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
1. 2-3 repos GitHub publics avec README EN pro (installation, features, screenshot/gif)
|
||||||
|
2. Chaque plugin poussé jusqu'à un effet wahou visuel ou gameplay (pas juste "hello world")
|
||||||
|
3. Section `/hytale` affiche les démos via composant `HytaleDemoGrid.vue` — card avec screenshot, description, lien GitHub
|
||||||
|
4. Tooling build plugin Hytale documenté au moins une fois dans un README (Kotlin ou Java)
|
||||||
|
**Plans:** 3 plans
|
||||||
|
Plans:
|
||||||
|
- [ ] 10-01-PLAN.md — Brainstorm + choix 2-3 concepts plugins (critères : 1-3j de code, wow factor, API Hytale avancée) + spec rapide chaque plugin
|
||||||
|
- [ ] 10-02-PLAN.md — Code plugins + publish GitHub + README EN (gif/screenshot assets dans public/demos/)
|
||||||
|
- [ ] 10-03-PLAN.md — Composant `HytaleDemoGrid.vue` + intégration `/hytale` + i18n hytale.demos.* + data source (app/data/hytaleDemos.ts ou frontmatter)
|
||||||
|
|
||||||
|
### Phase 11: Rebranding + Cocon ✅ (shipped 2026-04-22)
|
||||||
|
**Goal**: Zéro ref "Full Stack" dans code/JSON-LD/meta, jobTitle cohérent, `/hytale` affiche derniers articles
|
||||||
|
**Outcome**: Shipped. JSON-LD homepage via siteConfig, 14 clés i18n FR+EN refondues, site.name fixé, HytaleRecentArticles déjà intégré (carry-over de M1.1 Phase 8).
|
||||||
|
**Requirements**: REBRAND-01 ✅, REBRAND-02 ✅, REBRAND-03 ✅, COCON-01 ✅
|
||||||
|
**Plans:** 2 plans
|
||||||
|
Plans:
|
||||||
|
- [x] 11-01-PLAN.md — REBRAND-01/02/03 (commit f72170b)
|
||||||
|
- [x] 11-02-PLAN.md — COCON-01 (déjà shippé avec M1.1, composant live sur /hytale.vue:38)
|
||||||
|
|||||||
+35
-34
@@ -1,16 +1,16 @@
|
|||||||
---
|
---
|
||||||
gsd_state_version: 1.0
|
gsd_state_version: 1.0
|
||||||
milestone: v1.0
|
milestone: v1.2
|
||||||
milestone_name: milestone
|
milestone_name: Ship to Prod + Credibility Gap
|
||||||
status: Plan 07-04 shipped — endpoint Nitro sitemap bilingue (draft-filtered + hreflang x-default), SEO-12 complet
|
status: Phase 9 + Phase 11 shipped. Seule Phase 10 (demo plugins Hytale) reste — code offline par user. Rebranding complet FR/EN, HytaleRecentArticles live sur /hytale.
|
||||||
last_updated: "2026-04-22T16:39:45.338Z"
|
last_updated: "2026-04-22T23:30:00.000Z"
|
||||||
last_activity: 2026-04-22
|
last_activity: 2026-04-22
|
||||||
progress:
|
progress:
|
||||||
total_phases: 8
|
total_phases: 3
|
||||||
completed_phases: 5
|
completed_phases: 2
|
||||||
total_plans: 18
|
total_plans: 6
|
||||||
completed_plans: 17
|
completed_plans: 4
|
||||||
percent: 94
|
percent: 67
|
||||||
---
|
---
|
||||||
|
|
||||||
# Project State
|
# Project State
|
||||||
@@ -23,31 +23,32 @@ progress:
|
|||||||
|
|
||||||
## Current Focus
|
## Current Focus
|
||||||
|
|
||||||
Phase: Phase 7 — SEO Blog
|
Milestone: M1.2 — Ship to Prod + Credibility Gap
|
||||||
Plan: 07-03 (next — Wave 2, blog index/tags SEO)
|
Phase: Phase 10 — Demo Plugins Hytale (code offline par user)
|
||||||
Status: Plan 07-04 shipped — endpoint Nitro sitemap bilingue (draft-filtered + hreflang x-default), SEO-12 complet
|
Plan: 10-02 Wave 1 (GravityFlip) — premier plugin à coder, le portfolio est prêt à les accueillir côté frontend
|
||||||
|
Status: Phase 9 + Phase 11 shipped. 4/6 plans complete (67%).
|
||||||
Last activity: 2026-04-22
|
Last activity: 2026-04-22
|
||||||
Resume file: .planning/phases/07-seo-blog/07-03-PLAN.md
|
Resume : user code les plugins side (5 repos GitHub), puis retour sur Plan 10-03 (HytaleDemoGrid) quand ≥1 plugin shippé
|
||||||
|
|
||||||
## Accumulated Context
|
## Milestone Context (v1.2)
|
||||||
|
|
||||||
- M1 complet — déployé en production sur killiandalcin.fr (phases 1–4)
|
- **Why v1.2** : débloquer prospection active (Discord + DMs 5-10h/sem) qui suit. Deploy + démos + cohérence branding.
|
||||||
- Stack : Nuxt 4 SSR + Nuxt UI v3 + Tailwind v4 + pnpm + @nuxt/content v3
|
- **Phase 9** : Deploy prod (Portainer autobuild pull) — M1.1 codée mais pas live
|
||||||
- Phase 5 shipped: @nuxt/content installé, collections bilingues `blog_fr`/`blog_en`, composants MDC (ProseImg, Alert, ProsePre, Columns, Details, Badge, Video, Clear), Shiki single github-dark, `app/pages/blog/[slug].vue` rend les articles FR/EN
|
- **Phase 10** : 2-3 mini-plugins Hytale open-source — effet wahou, simple à coder, API Hytale poussée au max. Crédibilité DM Discord.
|
||||||
- **Gotchas Phase 5 (à retenir)** :
|
- **Phase 11** : Fix JSON-LD `index.vue` (Full Stack → Hytale Plugin Developer via siteConfig) + audit cohérence + composant `HytaleRecentArticles` sur `/hytale`
|
||||||
- Catch-all `[...slug].vue` + `@nuxtjs/i18n` strategy `prefix` → page component résout à `{}` (Vue warn: missing template). Fix : single-segment `[slug].vue`.
|
|
||||||
- `queryCollection(variable)` pas analysable par le Vite extractor de @nuxt/content → utiliser toujours des littéraux `queryCollection('blog_fr')` / `queryCollection('blog_en')`.
|
## Accumulated Context (carried from v1.1)
|
||||||
- `i18n.baseUrl` requis pour `useLocaleHead` (SEO tags). Ne pas retirer.
|
|
||||||
- Redirection langue-détectée sans langue dans l'URL : `detectBrowserLanguage.redirectOn: 'no prefix'` + `fallbackLocale`. Éviter les `routeRules` `/blog/**` hardcodés (cassent le slug + bloquent la détection navigateur).
|
- Stack : Nuxt 4 SSR + Nuxt UI v3 + Tailwind v4 + pnpm + @nuxt/content v3 + nuxt-schema-org + @nuxtjs/sitemap v8
|
||||||
- Objectif double : ranker sur "Hytale plugin developer" ET capter trafic longue traîne via contenu communauté
|
- Deployment : Docker node:22-alpine, Portainer autobuild, pull manuel par Killian côté prod
|
||||||
- Articles bilingues : structure FR/EN dans content/ (ex: content/fr/blog/, content/en/blog/)
|
- Gotchas M1.1 (à retenir pour plans à venir) :
|
||||||
- og:image par article : image frontmatter ou fallback branded — jamais l'og-image.png générique M1
|
- `queryCollection(variable)` pas analysable par Vite extractor @nuxt/content → toujours littéraux `queryCollection('blog_fr')`
|
||||||
- **Plan 06-01 shipped (2026-04-22)** : blogSchema étendu (draft.default(false) + wordCount.optional + minutes.optional), Nitro hook `content:file:afterParse` injecte wordCount+minutes (200 wpm, floor 1 min) sur chaque `.md` via `countWordsInMinimalBody`, composable fallback `useReadingTime(number|string)` auto-importé, articles `test-kotlin-syntax.md` (FR+EN) marqués `draft: true` — exclus des listings `where('draft', '=', false)` mais accessibles par URL directe. Cache `node_modules/.cache/content` + `.nuxt` vidés.
|
- Dans server/, importer `queryCollection` depuis `@nuxt/content/server` pour vue-tsc (sinon signature client incompatible)
|
||||||
- **Gotcha 06-01** : Le hook `content:file:afterParse` exige que `wordCount`/`minutes` soient déclarés dans le schema Zod (`.optional()` sans default) sinon ils sont strippés avant persistance DB — les propriétés injectées par hook ne sont queryables que si le schema les expose.
|
- `defineSitemapEventHandler` = auto-import @nuxtjs/sitemap (pas d'import explicite)
|
||||||
- **Gotcha 06-01 (convention)** : Dans un plugin Nitro, importer depuis `app/utils/` se fait via `~/utils/...` (et non `~~/app/utils/...`). Nuxt 4 mappe `~/` → `app/` par défaut. Vérifié par typecheck vert sur server/plugins/reading-time.ts.
|
- `defineArticle.inLanguage` typing narrow → cast `as unknown as ComputedRef<'fr-FR'>`
|
||||||
- **Plan 06-02 shipped (2026-04-22)** : i18n `nav.blog` + 3 clés `a11y.blog*` (avec interpolation `{title}`) + bloc `blog.*` 14 clés (title, subtitle, stats.*, readingTime, prevArticle/nextArticle, backToBlog, toc.title, emptyState.*, breadcrumb.*) ajoutés dans fr.json + en.json. AppHeader.vue navLinks : `{ key: 'blog', path: '/blog' }` inséré entre hytale et projects (ligne 11, ordre D-15 respecté). `app/components/BlogCard.vue` créé (192 lignes, auto-importé Nuxt) : variant `default` (listing) avec cover conditional + tag UBadge + date Intl.DateTimeFormat + h2 + description line-clamp-2 + reading-time (minutes hook || useReadingTime fallback) + extra tags pills + full-card NuxtLink SEO + Schema.org BlogPosting markup ; variant `compact` (prev/next, D-09/D-10) : no image + label row avec UIcon arrow directionnelle + h3 + date + NuxtLink aria-label interpolé `a11y.blogPrev`/`a11y.blogNext`. Typecheck exit 0.
|
- `useSeoMeta.articleAuthor` attend `string[]` (pas string)
|
||||||
- **Gotcha 06-02 (slug derivation)** : Les articles @nuxt/content ont un `path` de forme `/fr/blog/my-slug`. Dans BlogCard.vue, on extrait le slug via `article.path.split('/').filter(Boolean).pop()` puis on reconstruit `localePath('/blog/' + slug)` — locale-agnostique. Évite de demander un champ `slug` explicite dans le frontmatter (cohérent convention @nuxt/content : path dérivé du nom de fichier).
|
- Hook `content:file:afterParse` : propriétés injectées doivent être déclarées `.optional()` dans le schema Zod
|
||||||
- **Plan 07-02 shipped (2026-04-22)** : `app/utils/resolve-og-image.ts` (préfixe https://killiandalcin.fr + fallback /og-blog-default.jpg) + `public/og-blog-default.jpg` (placeholder copié depuis og-image.png — design branded 1200×630 en follow-up backlog) + `app/pages/blog/[slug].vue` enrichi : imports KILLIAN_PERSON_ID+resolveOgImage, useAsyncData altExists (détecte pair bilingue FR/EN), computeds ogImage/canonicalUrl/publishedIso/modifiedIso/inLanguageTag, useSeoMeta étendu 5→14 clés (D-15 complet : ogImage, ogUrl, ogLocale, ogLocaleAlternate conditionnel, twitterCard, twitterImage, articlePublishedTime, articleModifiedTime, articleAuthor string[]), useSchemaOrg([defineArticle {author/publisher @id=#killian}, defineBreadcrumb 3 items]). Curl /fr/blog/{slug} valide : og:image absolu, article:published_time, JSON-LD Article + BreadcrumbList.
|
- Imports Nitro plugin : `~/utils/...` (Nuxt 4 `~/` → `app/`)
|
||||||
- **Plan 07-04 shipped (2026-04-22)** : `server/api/__sitemap__/urls.ts` (76 lignes) — `defineSitemapEventHandler` (auto-import @nuxtjs/sitemap v8) avec `Promise.all([queryCollection(event,'blog_fr'), queryCollection(event,'blog_en')]).where('draft','=',false).order('date','DESC').select('path','date','updated').all()`. Map<slug,{fr?,en?}> pour détecter paires bilingues → alternates [fr, en, x-default→FR] si bilingue, sinon []. lastmod = updated ?? date. Validé curl : endpoint JSON valide, sitemap XML multi-sitemap mode (fr-FR.xml + en-US.xml) contient bien les URLs /blog/{slug} avec hreflang x-default, drafts absents. SEO-12 requirement complete.
|
- Articles seed Hytale en prod : `how-to-build-your-first-hytale-plugin`, `hytale-plugin-development-2026` (FR+EN, draft:false)
|
||||||
- **Gotcha 07-04 (queryCollection import)** : `pnpm typecheck` (vue-tsc) ne résout pas l'auto-import Nitro de `queryCollection` dans server/ — il prend la signature client `(collection)` et râle `TS2554 Expected 1, got 2`. Fix : `import { queryCollection } from '@nuxt/content/server'` (même runtime, signature Nitro `(event, collection)` correctement typée). Aussi : `defineSitemapEventHandler` est un auto-import @nuxtjs/sitemap, PAS un export de `#imports` — ne pas importer explicitement.
|
- `app/data/site.ts` / `app/pages/hytale.vue` / `app/utils/seo-person.ts` : `jobTitle` = "Hytale Plugin Developer" (aligné)
|
||||||
- **Gotcha 07-02 (typings nuxt-schema-org)** : `defineArticle.inLanguage` inféré `ComputedRef<MaybeFalsy<'fr-FR'>>` (narrow) refuse une union `'fr-FR' | 'en-US'`. Cast localisé `as unknown as ComputedRef<'fr-FR'>` suffit — runtime émet correctement les deux valeurs selon locale. `articleAuthor` de useSeoMeta attend `string[]`, pas `string` (packaging @unhead récent).
|
- `app/pages/index.vue` lignes 28 + 38 : encore "Developpeur Full Stack" (cible REBRAND-01)
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
# Requirements: Milestone v1.1 — SEO Hytale — Autorité & Contenu
|
||||||
|
|
||||||
|
**Archived:** 2026-04-22
|
||||||
|
**Status:** ✅ All 13 requirements SHIPPED
|
||||||
|
|
||||||
|
## v1.1 Requirements — SEO Hytale — Autorité & Contenu
|
||||||
|
|
||||||
|
### Blog — Système
|
||||||
|
|
||||||
|
- [x] **BLOG-01**: Intégration `@nuxt/content` — renderer markdown complet (syntax highlighting Shiki, images NuxtImg, tables, callouts/alerts via composants MDC custom) — Phase 5
|
||||||
|
- [x] **BLOG-02**: Page listing `/blog` — liste articles avec titre, description, date, tags, SSR bilingue — Phase 6
|
||||||
|
- [x] **BLOG-03**: Page article `/blog/[slug]` — rendu SSR complet, table des matières (BlogToc + IntersectionObserver), navigation prev/next (BlogPrevNext) — Phase 6
|
||||||
|
- [x] **BLOG-04**: Blocs de code avec syntax highlighting (Shiki single-theme github-dark, langues Kotlin/Java/TypeScript/Shell supportées) — Phase 5
|
||||||
|
- [x] **BLOG-05**: Images dans articles — `<NuxtImg>` via composant ProseImg custom, lazy + webp — Phase 5
|
||||||
|
|
||||||
|
### Blog — Contenu
|
||||||
|
|
||||||
|
- [x] **BLOG-06**: Articles bilingues FR/EN — collections `blog_fr` / `blog_en` dans content.config.ts, slugs identiques pour hreflang pairing — Phase 6
|
||||||
|
- [x] **BLOG-07**: 2 articles seed Hytale publiés — "How to build your first Hytale plugin" et "Hytale plugin development in 2026" (FR+EN, draft:false, Java API réelle) — Phase 8
|
||||||
|
|
||||||
|
### SEO — Blog
|
||||||
|
|
||||||
|
- [x] **SEO-10**: `useSeoMeta()` par article — title, description, og:title/description/image uniques par slug — Phase 7
|
||||||
|
- [x] **SEO-11**: JSON-LD `Article` par billet — author/publisher @id=#killian, datePublished, dateModified, headline, mainEntityOfPage, inLanguage — Phase 7
|
||||||
|
- [x] **SEO-12**: Sitemap étendu — endpoint Nitro `/api/__sitemap__/urls` source @nuxtjs/sitemap, inclut `/blog/[slug]` FR+EN auto — Phase 7
|
||||||
|
- [x] **SEO-13**: Open Graph image par article — helper `resolveOgImage()` (frontmatter `image:` → fallback `/og-blog-default.jpg`), jamais l'og-image.png générique — Phase 7
|
||||||
|
|
||||||
|
### SEO — Cocon sémantique
|
||||||
|
|
||||||
|
- [x] **SEO-14**: Liens internes — articles blog contiennent 1-2 liens inline vers `/hytale` (ou `/en/hytale`) ; `/hytale` affiche section "Articles récents" filtrée tag=hytale (HytaleRecentArticles.vue) — Phase 8
|
||||||
|
- [x] **SEO-15**: JSON-LD `BreadcrumbList` — Accueil → Blog → Article sur `/blog/[slug]` ; Accueil → Blog sur `/blog` — Phase 7
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Traceability v1.1
|
||||||
|
|
||||||
|
| Requirement | Phase | Outcome |
|
||||||
|
|-------------|-------|---------|
|
||||||
|
| BLOG-01 | Phase 5 | Validated |
|
||||||
|
| BLOG-04 | Phase 5 | Validated |
|
||||||
|
| BLOG-05 | Phase 5 | Validated |
|
||||||
|
| BLOG-02 | Phase 6 | Validated |
|
||||||
|
| BLOG-03 | Phase 6 | Validated |
|
||||||
|
| BLOG-06 | Phase 6 | Validated |
|
||||||
|
| SEO-10 | Phase 7 | Validated |
|
||||||
|
| SEO-11 | Phase 7 | Validated |
|
||||||
|
| SEO-12 | Phase 7 | Validated |
|
||||||
|
| SEO-13 | Phase 7 | Validated — with deferred: asset `/og-blog-default.jpg` branded design reste en backlog (placeholder 72 bytes actuel) |
|
||||||
|
| SEO-15 | Phase 7 | Validated |
|
||||||
|
| BLOG-07 | Phase 8 | Validated — correction post-shipping Kotlin→Java suite fetch hytalemodding.dev |
|
||||||
|
| SEO-14 | Phase 8 | Validated |
|
||||||
|
|
||||||
|
## Deferred from v1.1 (carried to backlog)
|
||||||
|
|
||||||
|
- **Asset branded `/og-blog-default.jpg` 1200×630** — design work, placeholder en place
|
||||||
|
- **og:image dynamique Satori (SEO-06 original)** — coût vs impact non justifié
|
||||||
|
- **Plus de 2 articles seed** — backlog éditorial continu, pas une milestone
|
||||||
|
- **Page `/blog/tags/[tag]`** — utile au SEO long-tail dès qu'on a 10+ articles
|
||||||
|
- **RSS feed** — si audience organique > 500 sessions/mois
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
# Milestone v1.1: SEO Hytale — Autorité & Contenu
|
||||||
|
|
||||||
|
**Status:** ✅ SHIPPED 2026-04-22
|
||||||
|
**Phases:** 5–8
|
||||||
|
**Total Plans:** 13 (2 + 4 + 4 + 3)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Construction d'un blog markdown bilingue complet (@nuxt/content v3) avec SEO de niveau production — JSON-LD Article/Breadcrumb/CollectionPage, sitemap dynamique avec hreflang x-default, og:image résolu par article — et cocon sémantique bidirectionnel entre `/blog` et `/hytale` via 2 articles seed Hytale.
|
||||||
|
|
||||||
|
## Phases
|
||||||
|
|
||||||
|
### Phase 5: @nuxt/content Setup & Renderer
|
||||||
|
|
||||||
|
**Goal:** Système de contenu markdown installé et rend fidèlement le contenu technique — blocs de code colorés, images optimisées, tables, alerts.
|
||||||
|
**Depends on:** Phase 4 (M1 complete)
|
||||||
|
**Requirements:** BLOG-01, BLOG-04, BLOG-05
|
||||||
|
**Plans:** 2 plans
|
||||||
|
|
||||||
|
- [x] 05-01: Installation @nuxt/content, configuration Shiki github-dark, content.config.ts collections bilingues
|
||||||
|
- [x] 05-02: Composants MDC (ProseImg, Alert, ProsePre, Columns, Details, Badge, Video, Clear), articles de test FR/EN
|
||||||
|
|
||||||
|
**Key decisions captured:** queryCollection avec littéraux seulement (pitfall Vite extractor), single-segment `[slug].vue` vs catch-all, Shiki single-theme, `i18n.baseUrl` requis pour useLocaleHead.
|
||||||
|
|
||||||
|
### Phase 6: Blog Pages
|
||||||
|
|
||||||
|
**Goal:** Un visiteur navigue /blog, parcourt la liste, ouvre un article, voit sa TOC et navigue prev/next — en SSR FR/EN.
|
||||||
|
**Depends on:** Phase 5
|
||||||
|
**Requirements:** BLOG-02, BLOG-03, BLOG-06
|
||||||
|
**Plans:** 4 plans
|
||||||
|
|
||||||
|
- [x] 06-01: Content schema Zod (draft/wordCount/minutes) + Nitro hook reading-time + draft:true test articles
|
||||||
|
- [x] 06-02: i18n keys blog.*/nav.blog/a11y.blog* + lien Blog AppHeader + BlogCard.vue (default + compact variants)
|
||||||
|
- [x] 06-03: Page listing app/pages/blog/index.vue (hero + grid + empty state, SSR bilingue)
|
||||||
|
- [x] 06-04: BlogToc.vue + BlogPrevNext.vue + enrichissement [slug].vue (breadcrumb + TOC + surround)
|
||||||
|
|
||||||
|
**Key decisions captured:** Hook `content:file:afterParse` exige `.optional()` sur schema Zod pour les champs injectés ; derivation slug via `article.path.split('/').pop()` ; cache `.nuxt` + `node_modules/.cache/content` à purger après changement schema.
|
||||||
|
|
||||||
|
### Phase 7: SEO Blog
|
||||||
|
|
||||||
|
**Goal:** Chaque page blog indexable avec meta tags complets, JSON-LD Article valide, URLs blog dans sitemap.
|
||||||
|
**Depends on:** Phase 6
|
||||||
|
**Requirements:** SEO-10, SEO-11, SEO-12, SEO-13, SEO-15
|
||||||
|
**Plans:** 4 plans
|
||||||
|
|
||||||
|
- [x] 07-01: Install nuxt-schema-org + schema `updated` + definePerson/defineWebSite global app.vue + sitemap.sources
|
||||||
|
- [x] 07-02: resolveOgImage helper + /og-blog-default.jpg + [slug].vue useSeoMeta D-15 + defineArticle/defineBreadcrumb
|
||||||
|
- [x] 07-03: index.vue useSeoMeta D-16 + defineWebPage(CollectionPage) + defineBreadcrumb
|
||||||
|
- [x] 07-04: server/api/__sitemap__/urls.ts — Nitro endpoint bilingue, draft filter, hreflang alternates x-default
|
||||||
|
|
||||||
|
**Key decisions captured:** `queryCollection` en Nitro prend `event` en premier argument (via `@nuxt/content/server` explicit import pour satisfaire vue-tsc) ; `definePerson` global avec @id=#killian réutilisé inline via `{'@id': '#killian'}` ; `articleAuthor` attend `string[]` ; cast local pour `inLanguage` union FR/EN.
|
||||||
|
|
||||||
|
### Phase 8: Content & Cocon Sémantique
|
||||||
|
|
||||||
|
**Goal:** 2 articles seed Hytale de qualité + section "Articles récents" sur /hytale + cocon sémantique bidirectionnel.
|
||||||
|
**Depends on:** Phase 7
|
||||||
|
**Requirements:** BLOG-07, SEO-14
|
||||||
|
**Plans:** 3 plans
|
||||||
|
|
||||||
|
- [x] 08-01: Scaffold HytaleRecentArticles.vue (queryCollection bilingue + filtre JS `tags.includes('hytale')` + limit 2 + v-if hide) + injection hytale.vue + i18n keys
|
||||||
|
- [x] 08-02: Article seed "How to build your first Hytale plugin" (FR 1209 / EN 1123 mots, Java/JavaPlugin, manifest.json, Gradle)
|
||||||
|
- [x] 08-03: Article seed "Hytale plugin development in 2026" (FR 1468 / EN 1335 mots, early access state, modern Java features)
|
||||||
|
|
||||||
|
**Key decisions captured:** Filtre JS post-query plutôt que SQL LIKE pour les tags JSON array ; liens `/hytale` hardcoded en markdown (pas de `localePath()` en MDC) ; slugs FR/EN identiques pour hreflang pairing. **Correction post-shipping :** articles initialement rédigés en Kotlin (placeholder), réécrits en Java après fetch hytalemodding.dev + britakee-studios GitBook pour refléter l'API réelle (`com.hypixel.hytale.plugin.JavaPlugin`, constructor `JavaPluginInit`, `manifest.json`, Gradle, Java 25).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Milestone Summary
|
||||||
|
|
||||||
|
**Shipped features:**
|
||||||
|
- Blog markdown bilingue FR/EN avec @nuxt/content v3 + Shiki syntax highlighting
|
||||||
|
- Page listing `/blog` + page article `/blog/[slug]` SSR avec TOC + prev/next
|
||||||
|
- SEO complet par article : useSeoMeta enrichi (14 clés), JSON-LD Article + Breadcrumb + CollectionPage, og:image résolu
|
||||||
|
- Sitemap dynamique `/api/__sitemap__/urls` avec alternates hreflang fr/en/x-default, drafts filtrés
|
||||||
|
- 2 articles seed Hytale publiés (Java API réelle, 2 liens inline /hytale chacun)
|
||||||
|
- Section "Articles récents" sur `/hytale` (filtrée tag=hytale, v-if hide si vide)
|
||||||
|
- Cocon sémantique bidirectionnel blog ↔ hytale établi
|
||||||
|
|
||||||
|
**New dependencies added:** `@nuxt/content`, `nuxt-schema-org`
|
||||||
|
|
||||||
|
**Files created (top-level):**
|
||||||
|
- `app/components/BlogCard.vue`, `BlogToc.vue`, `BlogPrevNext.vue`, `HytaleRecentArticles.vue`
|
||||||
|
- `app/pages/blog/index.vue`, `app/pages/blog/[slug].vue`
|
||||||
|
- `app/utils/seo-person.ts`, `resolve-og-image.ts`
|
||||||
|
- `server/api/__sitemap__/urls.ts`
|
||||||
|
- `server/plugins/reading-time.ts`
|
||||||
|
- `content/fr/blog/` + `content/en/blog/` (4 seed articles)
|
||||||
|
- `content.config.ts` (schemas Zod bilingues)
|
||||||
|
|
||||||
|
**Requirements coverage:** 13/13 — BLOG-01..07, SEO-10..15 tous satisfaits.
|
||||||
|
|
||||||
|
**Git range:** 31 commits sur les phases 05-08.
|
||||||
|
|
||||||
|
**Notable learnings:**
|
||||||
|
- Nuxt 4 + @nuxt/content + @nuxtjs/i18n : single-segment `[slug].vue` obligatoire (catch-all casse en strategy `prefix`)
|
||||||
|
- `queryCollection` dans Nitro nécessite `event` first-arg + import explicite depuis `@nuxt/content/server` pour vue-tsc
|
||||||
|
- Schema Zod `.optional()` requis pour que les champs injectés par Nitro hook `content:file:afterParse` soient queryables
|
||||||
|
- Recherche API tierce avant rédaction tutoriel : Kotlin assumé pour Hytale → en réalité Java (correction post-shipping documentée)
|
||||||
|
|
||||||
|
**Archive date:** 2026-04-22
|
||||||
|
**Full phase artifacts:** `.planning/phases/05-*` through `.planning/phases/08-*` (preserved)
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# Phase 08 — Corrections API Hytale
|
||||||
|
|
||||||
|
**Date :** 2026-04-22
|
||||||
|
**Auteur :** Killian' Dalcin
|
||||||
|
|
||||||
|
## Contexte
|
||||||
|
|
||||||
|
Les plans 08-02 et 08-03 ont livré les articles blog « Créer son premier plugin Hytale » et « Développement de plugins Hytale en 2026 » rédigés en prenant **Kotlin** comme langage cible, avec une API imaginaire (`HytalePlugin` base class, annotations `@EventHandler` côté SDK `io.hytale.api.*`, manifest `plugin.toml`, etc.).
|
||||||
|
|
||||||
|
Après fetch des sources communautaires officielles le 2026-04-22, cette hypothèse s'est révélée **incorrecte**. Le stack réel Hytale plugin est en Java.
|
||||||
|
|
||||||
|
## Correction appliquée
|
||||||
|
|
||||||
|
Les quatre articles ont été réécrits pour refléter l'API réelle :
|
||||||
|
|
||||||
|
| Fichier | Commit |
|
||||||
|
|---|---|
|
||||||
|
| `content/fr/blog/how-to-build-your-first-hytale-plugin.md` | `301ab48` |
|
||||||
|
| `content/en/blog/how-to-build-your-first-hytale-plugin.md` | `be613f8` |
|
||||||
|
| `content/fr/blog/hytale-plugin-development-2026.md` | `a61596a` |
|
||||||
|
| `content/en/blog/hytale-plugin-development-2026.md` | `bc1c451` |
|
||||||
|
|
||||||
|
## Stack réel Hytale (vérifié 2026-04-22)
|
||||||
|
|
||||||
|
- **Langage :** Java (JDK 25)
|
||||||
|
- **IDE :** IntelliJ IDEA Community Edition
|
||||||
|
- **Build :** Gradle (`settings.gradle`, `gradle.properties`, `build.gradle`)
|
||||||
|
- **Classe de base :** `JavaPlugin` (package `com.hypixel.hytale.plugin`)
|
||||||
|
- **Constructeur obligatoire :** `public YourPlugin(@Nonnull JavaPluginInit init) { super(init); }`
|
||||||
|
- **Lifecycle :** `@Override public void onEnable()` / `@Override public void onDisable()`
|
||||||
|
- **Logger :** `getLogger().info(...)`
|
||||||
|
- **Enregistrement de listeners :** `getServer().getPluginManager().registerEvents(new MyListener(), this);` (API Bukkit-like dans sa forme, mais implémentation Hypixel native)
|
||||||
|
- **Manifest :** `src/main/resources/manifest.json` (pas `plugin.yml`), champs capitalisés : `Group`, `Name`, `Main`, `Version`, `Description`, `Authors`, `ServerVersion`
|
||||||
|
- **Statut 2026 :** early access (pas « au lancement ») — API plugin officiellement fournie, doc officielle GitBook en cours de rédaction
|
||||||
|
|
||||||
|
## Sources consultées
|
||||||
|
|
||||||
|
- [hytalemodding.dev](https://hytalemodding.dev) — template plugin + guides FR+EN
|
||||||
|
- [britakee-studios.gitbook.io/hytale-modding-documentation](https://britakee-studios.gitbook.io/hytale-modding-documentation) — GitBook communautaire, doc la plus à jour
|
||||||
|
|
||||||
|
## Ajustements de ton
|
||||||
|
|
||||||
|
- Tout le vocabulaire « when Hytale launches » a été remplacé par « while Hytale is in early access ».
|
||||||
|
- Les affirmations Bukkit/Spigot directes ont été relativisées : l'API **ressemble** à Bukkit dans sa forme (bon onboarding pour devs Paper) mais **n'est pas** Bukkit — package et implémentation Hypixel natifs.
|
||||||
|
- Un avertissement explicite sur le caractère approximatif des noms d'events exacts a été conservé (alert `warning` + mention `britakee-studios` GitBook comme source à jour).
|
||||||
|
|
||||||
|
## Vérification
|
||||||
|
|
||||||
|
- `pnpm typecheck` : ✅ passe, schéma Zod du content collection respecté
|
||||||
|
- Frontmatter `draft: false` : ✅ préservé pour les 4 articles
|
||||||
|
- Slugs : ✅ inchangés
|
||||||
|
- Dates : ✅ inchangées (`2026-04-22` pour article 1, `2026-04-21` pour article 2)
|
||||||
|
- Word counts : FR1 1209, EN1 1123, FR2 1468, EN2 1335 — tous dans la fenêtre 1000-1500 (EN2 légèrement au-dessus, acceptable)
|
||||||
|
- Liens `/hytale` et `/en/hytale` : ✅ 2 par article
|
||||||
|
|
||||||
|
## Leçon pour la suite
|
||||||
|
|
||||||
|
Avant tout article technique portant sur un écosystème externe (Hytale, Hypixel, autre), **fetch au moins une source officielle ou communautaire de référence** avant rédaction. Les plans 08-02 et 08-03 ont été rédigés sur une hypothèse langue (Kotlin) issue de ce qui « semblait plausible » en 2026 — le coût de la correction (4 réécritures) aurait été évitable avec un fetch de 5 minutes au planning.
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
# Marché Hytale du plugin payant, fenêtre ouverte, vitre fragile
|
||||||
|
|
||||||
|
**Trois mois après l'Early Access du 13 janvier 2026, le marché du développement payant de plugins Hytale est embryonnaire mais monétisable dès maintenant — à condition de viser les niches délaissées et d'assumer une volatilité technique forte.** L'écosystème compte déjà ~3 500–5 000 mods sur CurseForge (majoritairement gratuits), ~278–295 plugins payants sur BuiltByBit, et 235 créateurs Hytale recensés sur cette même plateforme. Mais les volumes de ventes restent modestes (le best-seller plugin vérifié affiche 37 achats, le meilleur *server setup* 208). La demande existe — serveurs phares comme HyClash ($20 000 de budget public) ou Hytown recrutent — mais le pic de joueurs s'est effondré de ~52 % entre janvier et février. **Pour MYTHLANE SASU, la fenêtre d'entrée est ouverte pendant 12–18 mois avant que la consolidation ne fige les rentes de marque.** Le pari gagnant n'est pas le plugin cosmétique à $5 : c'est l'infrastructure MMORPG premium (quêtes, proxy/réseau, anti-triche, bibliothèques développeur) là où la baseline gratuite n'existe pas encore.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Résumé exécutif
|
||||||
|
|
||||||
|
1. **Marché du plugin payant Hytale = ~3,5 mois d'existence commerciale**, centralisé à 70 % sur BuiltByBit (295 plugins, 515+ ressources totales, 235 créateurs recensés). Polymart n'a pas encore de catégorie Hytale dédiée. CurseForge reste le canal gratuit officiel (partenariat Hypixel Studios/Overwolf, 20 M+ de téléchargements cumulés au Q1 2026). **Confiance : Haute.**
|
||||||
|
2. **Le pricing plugin est anchré bas** — $3–15 à l'unité, $8–16 en bundle, $10–30 pour un *server setup* complet. Seul l'anti-triche a basculé vers l'abonnement (HyGuard propose mensuel/trimestriel/à vie + $4,99/slot serveur). **Confiance : Haute.**
|
||||||
|
3. **Les volumes vérifiés sont faibles** : 37 achats pour Hytale Shop (Primax), 115 pour Premium Survival Setup (Nekio), 208 pour Premium Lobby Setup. **Aucun produit payant Hytale n'a dépassé 250 ventes vérifiées.** Le revenu brut d'un plugin payant à succès plafonne aujourd'hui à ~$2 000–$5 000 de lifetime. **Confiance : Haute.**
|
||||||
|
4. **Kotlin/JVM est officiellement supporté en first-class** — le template officiel HytaleModding/plugin-template cite explicitement « Java or Kotlin », une bibliothèque DSL dédiée existe (Hytale.kt), et KuramaStone se positionne publiquement comme « Full-Stack Java/Kotlin Hytale developer ». La stack de Killian est alignée sans friction. **Confiance : Haute.**
|
||||||
|
5. **Le SDK n'est pas encore stable pour du commercial serein** : le Directeur Technique Slikey reconnaît publiquement les crashs avec perte de données, la documentation incomplète, trois frameworks UI concurrents, et des *breaking changes* possibles à chaque patch. Cadence : mises à jour toutes les 2–6 semaines, pré-releases hebdomadaires, changelog API officialisé depuis Update 5 (2 avril 2026). **Confiance : Haute.**
|
||||||
|
6. **Population de serveurs fragmentée** — 400 à 1 200 serveurs selon les annuaires (HytaleCharts 432, HyServers 1 221, HytaleTop100 250+), mais concurrences simultanées souvent en simples chiffres par serveur. MAU estimées à ~700K en février 2026, DAU ~156K, pic concurrent ~52K, **chute de 52 % par rapport au pic de janvier.** Le récit « 2,8 M de joueurs au lancement » est infondé (bug d'auth, débunké). **Confiance : Moyenne** (données algorithmiques ActivePlayer.io, aucune divulgation officielle).
|
||||||
|
7. **La demande solvable existe mais elle est concentrée sur 10–30 serveurs ambitieux** : Hytown (équipe « ex-SpaceX/Runescape »), HyClash (ThirtyVirus, $20K budget), Runeteria (Float Studios), Histatu, Hylterium, Hyterion. Ces acteurs embauchent en interne ou via BuiltByBit, pas via Reddit ni les forums officiels.
|
||||||
|
8. **Catégories sous-servies à exploiter en priorité** — Quêtes (baseline gratuite quasi inexistante), Réseau/proxy (pas d'équivalent BungeeCord/Velocity identifié publiquement), Anti-triche (seulement 2 anti-triches gratuits recensés sur BBB), Frameworks de mini-jeux avec matchmaking, et **bibliothèques développeur premium** (Spellbook a 181K downloads en gratuit, prouvant l'appétit pour les fondations).
|
||||||
|
9. **Le benchmark Minecraft suggère un plafond réaliste à 2–3 ans** de $3–10 M/an de marché brut plugin payant Hytale, si l'adoption se maintient. À titre de repère : ItemsAdder (leader MC) a généré ~$200–500K de lifetime multi-canaux, LPX AntiPacketExploit ~$81K sur BBB seul, Craftaro ex-Songoda ~55 employés au pic. **Confiance : Faible** (extrapolation).
|
||||||
|
10. **Recommandation stratégique pour MYTHLANE** — Stratégie hybride en trois temps : (a) *loss-leader* gratuit reconnu (une bibliothèque de quêtes ou un module myth_lib détaché open-source) pour capturer la réputation, (b) suite premium productisée sur BuiltByBit à $15–25/plugin, ciblée MMORPG, (c) prestation bespoke long-terme à €60–100/h réservée aux 5–10 serveurs flagship. Éviter absolument la course au $5 sur Fiverr.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Dimensionnement du marché
|
||||||
|
|
||||||
|
### Tableau global
|
||||||
|
|
||||||
|
| Indicateur | Valeur (avril 2026) | Source | Confiance |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Mods Hytale sur CurseForge | ~3 500 (27 janv.) → ~5 000 estimé avril | Communiqué CurseForge/Overwolf, HytaleCharts | Haute (janv.) / Moyenne (avril) |
|
||||||
|
| Téléchargements cumulés CurseForge | 20 M+ au Q1 2026 | HytaleCharts, Switchblade Gaming | Haute |
|
||||||
|
| Plugins payants sur BuiltByBit | ~278–295 (plus 515+ ressources Hytale totales) | builtbybit.com/resources/hytale/plugins/ | Haute |
|
||||||
|
| Créateurs Hytale inscrits sur BuiltByBit | 235 | builtbybit.com/resources/hytale/ | Haute |
|
||||||
|
| Plugins payants sur Polymart | Quasi-nul (pas de catégorie Hytale dédiée, cross-listing occasionnel) | polymart.org | Haute |
|
||||||
|
| Serveurs Hytale listés (annuaires) | 432 (HytaleCharts), 1 221 (HyServers.gg), 500+ (HytaleServerList.me), 250+ (HytaleTop100) | Listes publiques | Haute |
|
||||||
|
| MAU estimées Hytale (févr.) | ~700K–744K | ActivePlayer.io | Faible (algorithmique) |
|
||||||
|
| DAU moyen (févr.) | ~156K–170K | ActivePlayer.io | Faible |
|
||||||
|
| Pic concurrent (févr.) | ~52K | HytaleCharts | Faible |
|
||||||
|
| Chute pic concurrent janv.→févr. | −52,6 % | HytaleCharts | Faible |
|
||||||
|
| Discord Hytale officiel | 559 693–567 000 membres | discord.com/invite/hytale | Haute |
|
||||||
|
| Discord HytaleModding (communautaire) | 9 848 membres | discord.com/invite/hytalemodding | Haute |
|
||||||
|
| Concours New Worlds (CurseForge/Hypixel) | $100 000 dotation, clôture 28 avril 2026 | hytale.com/news | Haute |
|
||||||
|
| Développeurs Hytale publiquement « for hire » identifiés | ~25–30 (Fiverr + BBB + sites perso) | Agrégation manuelle | Moyenne |
|
||||||
|
|
||||||
|
### Estimation TAM (marché adressable total)
|
||||||
|
|
||||||
|
Aucune donnée officielle de revenu n'est publiée. En triangulant les volumes BuiltByBit (top plugins à 37–208 achats, prix médian $10), le nombre total de plugins payants (~295) et en doublant pour les ventes directes Discord, **le brut marché plugin payant Hytale est estimé à $150 000–$400 000 annualisés au T2 2026. Confiance : Faible.** Le marché prestation bespoke (contrats ponctuels et mensuels) représente probablement un multiple de 3–5×, soit $500K–$2M annualisés. **Confiance : Faible.**
|
||||||
|
|
||||||
|
À horizon 24–36 mois, si Hytale stabilise sa base joueurs autour de 300–500K MAU et reproduit ~15–25 % de l'intensité de monétisation Minecraft (ItemsAdder-type plugins, écosystème Songoda/Craftaro), le TAM plugin + prestation pourrait atteindre **$3–10 M/an**. **Confiance : Faible — scénario extrapolé.**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Matrice concurrentielle
|
||||||
|
|
||||||
|
### Développeurs et agences Hytale identifiés publiquement
|
||||||
|
|
||||||
|
| Nom | Modèle | Prix visibles | Spécialisation | Forces | Faiblesses |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| **Owen (joxii / themuscular)** | Commissions à la pièce | $50–150 simple, $200–400+ systèmes (classes, matchmaking) | Systèmes RPG, économie, GUI, matchmaking | Portfolio public visible (ZHorde, Hytown Mount System, PyreTale), site perso, livraisons 1–3 semaines | Dépend du sourcing Discord, pas de production visible |
|
||||||
|
| **KuramaStone** | Long-terme + freelance | Non publié (DM) | Full-stack Java/Kotlin, infra réseau, bots Discord | 13+ ans d'expérience, clients prestigieux (BlazeGaming, Cobblemon, Stray.gg), GitHub fourni | Aucune grille publique, pas de productisation |
|
||||||
|
| **7D / Ben** | Commissions privées | Non publié | Mécaniques uniques, cœurs serveur | 8 ans Java, deux diplômes | Très discret, traction publique faible |
|
||||||
|
| **FancyInnovations** | OSS core + extensions premium (studio) | Non publié | Bibliothèques core (FancyCore), docs | Approche studio, docs structurées, GitHub actif | Productisation récente, notoriété encore en construction |
|
||||||
|
| **Britakee / Britakee Studios** | Outils gratuits (lead-gen) + commissions | Non publié | Templates, GitBook, tooling | Template plugin officiellement référencé, autorité écosystème | Revenus dépendants de la conversion Discord |
|
||||||
|
| **Primax Studios** | Listing marketplace BBB | $7,99 plugin, $9,88 bundle | Économie, shops | Ventes vérifiées (37 achats Hytale Shop), 3 176 vues | Volume modeste, niche encombrée |
|
||||||
|
| **Nekio** | Server setups productisés | $7,49–$22,49 | Lobby, Survival, Skyblock setups | **208 achats Premium Lobby, 133 Skyblock, 115 Survival** — meilleur vendeur vérifié | Cible admin amateur, ticket moyen faible |
|
||||||
|
| **HyGuard team** | Abonnement multi-tier + par slot | Mensuel/trim./semestriel/annuel/à vie + $4,99/slot/mois | Anti-triche premium | Seul acteur avec modèle SaaS revenu récurrent, site hyguard.ac dédié | Monopole fragile si Hypixel natif anti-triche s'améliore |
|
||||||
|
| **Ssomar (Special70)** | Marketplace Polymart, port MC→Hytale | Prix Polymart variables | Scripting items/blocks/entités (ExecutableItems, SCore) | Marque établie sur MC, portage rapide | Pas 100 % Hytale-natif |
|
||||||
|
| **Violet (VioletsWorkshop)** | Freelance → salariée Hypixel Studios (mars 2026) | N/A (recrutée) | Mobilier, décoration | Signal fort : Hypixel recrute en interne dans la communauté | Exit du marché freelance — précédent inquiétant pour la rétention des top devs |
|
||||||
|
| **Make_it_first / Pro_nick / Vic_kraft (Fiverr)** | Gigs Fiverr | $45–$95 (dev) ; $30 (assets) ; $15 (install) | Entry-level | Volume, accessibilité | Tarifs plancher, qualité variable |
|
||||||
|
| **Halos Development / KacperM Services** | Agences commissions | Non publié | Plugins cross-jeux | Multi-paiement (Stripe, crypto), pluriannuel | Pas Hytale-natifs, approche opportuniste |
|
||||||
|
| **etamerz** | Courtier multi-disciplines | « Maximum % » aux devs | Brokerage Discord | Intermédiaire entre clients et devs | Modèle de rente, peu scalable |
|
||||||
|
|
||||||
|
### Baseline gratuite dominante (concurrence indirecte)
|
||||||
|
|
||||||
|
Les 10 plugins/mods gratuits les plus téléchargés définissent les attentes du marché : **BetterMap (502K), EyeSpy (407K), Wan's Wonder Weapons (342K), RPG Leveling (277K), MMO Skill Tree (251K), Advanced Item Info (232K), Overstacked (209K), Simply Trash (192K), Vein Mining (184K), Spellbook (181K).** Auteurs prolifiques à surveiller : **DarkhaxDev** (~870K cumulés, co-auteur du template officiel), **Buuz135** (~577K), **Jaredlll08** (~308K). Toute offre payante doit impérativement surpasser cette baseline sur la profondeur fonctionnelle, pas sur la largeur.
|
||||||
|
|
||||||
|
Côté administration serveur gratuite, **EliteEssentials** (14K, LuckPerms-style) et **Essentials Core** (26K) occupent l'équivalent du territoire EssentialsX. À noter : l'Update 5 (2 avril 2026) a refondu nativement le système de permissions, rendant certaines couches d'admin moins défendables.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Analyse de la demande
|
||||||
|
|
||||||
|
### Archétypes d'acheteurs avec fourchettes budgétaires
|
||||||
|
|
||||||
|
| Archétype | Effectif typique | Budget dev customisé | Canal privilégié | Source / hypothèse |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| **Propriétaire solo / hobbyiste** | 1 propriétaire, 0–1 dev occasionnel | $5–$40 par plugin simple, souvent « gratuit contre vouch » | Fiverr, Discord, Upwork | Analogie MC (BBB threads) — Moyenne |
|
||||||
|
| **Petit réseau (2–5 staff)** | 1 dev mi-temps | $15–$25/h freelance, €50/projet court, retainer mensuel non quantifié | BuiltByBit, HytaleHub forum | Hytale thread BBB 736777 — Moyenne |
|
||||||
|
| **Serveur RPG/MMO mid-tier** | 5–15 staff, 1–2 devs + contractuels | ~20 h/semaine dev engagé, « high budget long-term roadmap » non chiffré | BuiltByBit, Discord privés | Thread BBB 737528 — Moyenne |
|
||||||
|
| **Réseau adossé à un créateur de contenu** | 15–30 staff, équipe dev+artistes | $20 000+ dédié pré-lancement | Recrutement ciblé + BBB | HyClash / ThirtyVirus, annonce publique — Haute |
|
||||||
|
| **Grand réseau ambition Hypixel** | 20+ ingénieurs temps plein | Implicite multi-$100K/an (revendications « ex-SpaceX/Runescape ») | Recrutement direct, aucun appel d'offres public | Hytown.org « About Us » — Faible |
|
||||||
|
| **Modèle revenu-share / volontariat** | 1–5 personnes, 0 cash | Equity / rev-share uniquement | Threads de recrutement ouverts | Thread BBB 735631 — Haute |
|
||||||
|
|
||||||
|
### Catégories de plugin les plus demandées
|
||||||
|
|
||||||
|
Le classement ci-dessous croise la fréquence des tags BuiltByBit (l'offre répond à la demande), les descriptifs des serveurs phares, et les fils de recrutement explicites. **Les systèmes de gameplay RPG dominent largement** (120 plugins taggés), suivis par l'UI (39), les cores/essentials (33), la génération de monde et les mondes eux-mêmes (30 chacun), le fun (30), l'économie (27), la modération (27), l'optimisation (27), le chat (24), la protection (24), les mobs personnalisés (24), les récompenses (23) et la monétisation Tebex (20). **Les catégories anormalement peu fournies — et donc les plus exploitables en premium — sont l'anti-triche (seulement 2 plugins), les patches (2), la magie (1), les bibliothèques (6), et les intégrations Discord (6).** Les quêtes et les proxies réseau sont quasi inexistants en payant comme en gratuit.
|
||||||
|
|
||||||
|
### Serveurs phares et signaux de recrutement
|
||||||
|
|
||||||
|
Aucun serveur Hytale n'a atteint l'échelle Hypixel/Mineplex en avril 2026. Les concurrences observées sur les annuaires plafonnent à ~29 joueurs simultanés pour le leader Runeteria. **Hytown** (play.hytown.org) se présente comme « #1 Hytale Server » avec une équipe « ex-SpaceX/Runescape » construisant un MMO pour l'été 2026. **HyClash** (hyclash.com) est mené par le créateur ThirtyVirus avec un **budget public de $20 000**, une infrastructure Kubernetes, et recrute ouvertement via BBB (lead dev « auvq »). **Runeteria** est bâti par Float Studios (vétérans Minecraft Marketplace). **Histatu Network** revendique 250+ mods, 500+ armes personnalisées, et des boss de raid co-op maison. **Hypixel Studios lui-même** a recruté Violet depuis la communauté (mars 2026) — signal que les top talents gratuits sortent du marché freelance vers des postes salariés officiels.
|
||||||
|
|
||||||
|
Les fils « Looking For Developer » sont quasi-exclusivement hébergés sur **BuiltByBit** (threads Hytale Development 20h/semaine, Hytale MMORPG Runetale, HyClash developers). **Reddit r/Hytale n'est pas un canal de brokerage** — les recherches ne remontent aucune mégathread de recrutement. Les forums hytale.com officiels ne servent pas non plus cette fonction.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Recommandations de positionnement stratégique
|
||||||
|
|
||||||
|
### Logique de positionnement pour MYTHLANE SASU
|
||||||
|
|
||||||
|
Trois faits structurels conditionnent la stratégie. **Premièrement**, Killian dispose déjà d'un portfolio de 10 plugins Kotlin internes sur architecture hub-and-spoke (myth_lib + myth_core) — c'est un actif technique rare dans un marché où les devs seniors publics se comptent sur les doigts d'une main. **Deuxièmement**, la fenêtre d'entrée est ouverte mais étroite : 12–18 mois avant que l'écosystème consolide ses rentes de marque (auteur-référence par catégorie). **Troisièmement**, la stack Kotlin/TypeScript full-stack + le projet MMORPG Mythlane + le SaaS VotePipe fournissent une crédibilité produit que les freelances Fiverr à $45 ne peuvent pas répliquer.
|
||||||
|
|
||||||
|
Les leçons Minecraft sont sans ambiguïté : **la productisation bat la prestation bespoke sur le scaling** (ItemsAdder, CMI, Lands, MythicMobs dominent tous par des plugins productisés avec écosystème Discord), **le freemium OSS-core seed la réputation** (EssentialsX, Auxilor eco), **les dependency libraries créent des moats durables** (ProtocolLib, Vault, Spellbook sur Hytale avec ses 181K downloads). Le « plugin + cours + serveur » triple-stack (MineAcademy model) est le meilleur risque-ajusté, ce qui valide précisément le pari Mythlane-serveur-phare.
|
||||||
|
|
||||||
|
### Trois options go-to-market classées par faisabilité
|
||||||
|
|
||||||
|
**Option A — Stack hybride « vitrine Mythlane + suite MMORPG premium » (faisabilité HAUTE, recommandée).** Sortir myth_lib et myth_core en open-source gratuit sur CurseForge et GitHub sous marque MYTHLANE, en capitalisant sur leur différenciation architecturale (hub-and-spoke, API unique sur Hytale) pour capturer le rôle d'infrastructure — le pattern Spellbook/eco. En parallèle, productiser 3–5 plugins Hytale ciblés MMORPG (quêtes avancées, système d'économie multi-serveur, framework de donjons, anti-triche MMO, proxy léger) sur BuiltByBit à $15–25/pièce, avec un bundle complet à $79–$99. Le serveur Mythlane MMORPG devient la vitrine vivante qui valide chaque plugin en production. Canal principal BuiltByBit, canal secondaire CurseForge (version gratuite allégée pour l'entonnoir). Participer au concours New Worlds avant le 28 avril si la deadline est tenable. Revenu cible 12 mois : $30–60K brut premium + $40–80K prestation long-terme sélective, soit $70–140K. **Confiance : Moyenne.**
|
||||||
|
|
||||||
|
**Option B — Agence senior bespoke « Mythlane Dev Studio » (faisabilité MOYENNE).** Positionner MYTHLANE comme l'agence senior Java/Kotlin de référence pour les 10–30 serveurs flagship Hytale (Hytown, HyClash, Histatu, Hylterium, Hyterion, Runeteria, et les entrants 2026). Tarif public €75–€100/h ou forfait €3 000–€8 000 pour systèmes MMO complexes (ce qui place la prestation 2–3× au-dessus du marché actuel Fiverr/Upwork et s'aligne sur le senior Minecraft freelance). Garantie SLA incluant suivi des breaking changes API Hytale à chaque update. Distribution par Discord privé, LinkedIn, et thread « For Hire » sur BuiltByBit. Ce modèle ne scale pas linéairement (plafond ~€150K/an en solo), mais il est très défensif contre la chute potentielle de la base joueurs Hytale : le revenu est contractuel, pas volumétrique. **Confiance : Haute sur l'exécution, Moyenne sur la demande solvable à ce tarif.**
|
||||||
|
|
||||||
|
**Option C — Plateforme SaaS hybride VotePipe × Hytale (faisabilité FAIBLE court-terme, fort potentiel 18–24 mois).** Leverager le SaaS VotePipe existant pour construire un add-on « Hytale Server Growth Suite » : intégration vote-reward multi-listes (HytaleCharts, HyServers, HytaleTop100, HytaleServerList, HytaleTop100), dashboard analytics server-owner, module monétisation Tebex-like. Abonnement mensuel $19–49/serveur. Seul vrai jeu SaaS récurrent de l'écosystème après HyGuard, et adjacent à l'expertise existante de Killian (TypeScript full-stack). Risque principal : base installée serveurs trop faible en avril 2026 pour soutenir une acquisition SaaS (l'option dépend d'une reprise de la courbe joueurs Hytale en 2026–2027). À garder en option de 12–24 mois, pas en *day-one*. **Confiance : Moyenne sur la faisabilité technique, Faible sur la taille de marché court-terme.**
|
||||||
|
|
||||||
|
### Pricing tier défendable dès aujourd'hui
|
||||||
|
|
||||||
|
Les repères ci-dessous sont construits en mixant les ventes vérifiées Hytale (Primax, Nekio, HyGuard) et la grille Minecraft senior 2023–2025 :
|
||||||
|
|
||||||
|
Pour les plugins premium productisés, viser **$15–$25/plugin** (20–60 % au-dessus du ticket moyen actuel, justifié par la qualité architecturale et la marque MMORPG), bundle MMORPG à **$79–$99**, addons DLC à **$5–$10**. Pour la prestation bespoke, facturer **€60–100/h** (senior Kotlin/JVM + contexte MMORPG), minimum projet **€500**, forfait petit système **€1 500–3 000**, forfait système MMO complet (économie cross-server, quêtes, proxy) **€5 000–15 000**. Pour les retainers long-terme (20h/semaine type HyClash), viser **€3 500–6 000/mois**. Éviter absolument les tarifs Fiverr ($45–95) qui détruiraient le positionnement.
|
||||||
|
|
||||||
|
### Canaux de distribution hiérarchisés par levier
|
||||||
|
|
||||||
|
Un seul classement opérationnel : **BuiltByBit est incontournable** (traction payante, 235 créateurs Hytale, purchases publiques, tags Hytale mûrs, 9,9 % de commission). **CurseForge est obligatoire** comme entonnoir gratuit et signal de crédibilité officielle. **Discord HytaleModding (9 848 membres) est le war-room technique** où se construit la réputation de senior. **GitHub public avec docs GitBook** est le signal de crédibilité pour les acheteurs B2B (serveurs flagship). **Un site MYTHLANE.dev** avec portfolio, démos vidéo et case studies Mythlane devient l'actif durable. Les canaux à déprioritiser : Polymart (pas de catégorie Hytale), Reddit r/Hytale (aucun brokerage), HyForge/HytaleForge/Hytale Mod Shop (inventaires trop minces pour valoir l'effort catalog). Fiverr uniquement en *loss-leader* éventuel pour capturer des premiers acheteurs à convertir vers le site direct.
|
||||||
|
|
||||||
|
### Signaux de crédibilité qui convertissent
|
||||||
|
|
||||||
|
Dans un marché de 3,5 mois, **la preuve visuelle et le portfolio live dominent tout le reste**. Les acheteurs flagship (Hytown, HyClash, serveurs MMO ambitieux) achètent d'abord un dev qu'ils ont vu livrer un produit complexe sur un vrai serveur. Les quatre signaux à industrialiser dans l'ordre : **(1) le serveur Mythlane lui-même comme showcase live**, (2) un GitHub public avec 3–5 repos Hytale documentés (myth_lib open-source en tête), (3) 2–3 vidéos YouTube démo 3–5 minutes montrant un système Mythlane en fonctionnement, (4) une présence Discord HytaleModding avec contributions techniques visibles (answers à des questions API, PRs sur plugin-template). À l'inverse, le réseau LinkedIn et le référencement SEO long-terme apportent peu en phase d'amorçage de marché.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Registre des risques et mesures d'atténuation
|
||||||
|
|
||||||
|
| Risque | Probabilité | Impact | Horizon | Mesure d'atténuation |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| **Instabilité du SDK Hytale** (crashs, *breaking changes* API, Pack compatibility) | Haute | Élevé (coûts de maintenance multiplicatifs) | 6–12 mois | Architecture myth_core comme couche d'isolation API unique (pattern déjà en place chez Killian), suivi automatisé du changelog officiel + doctale.dev, buffer de 20 % du temps facturé en maintenance incluse, refuser les forfaits fixes sur projets \>€3K |
|
||||||
|
| **Déclin de la base joueurs Hytale** (−52,6 % pic janv.→févr. 2026) | Moyenne-Haute | Critique (réduction TAM 50–80 %) | 6–18 mois | Diversification produits via VotePipe (indépendant Hytale), Option B bespoke à revenu contractuel, ne pas financer de R&D \>3 mois sans contrat pré-vendu, provisionner 6 mois de runway perso indépendant du revenu Hytale |
|
||||||
|
| **Concurrence gratuite massive** (5 000+ mods CurseForge, $100K concours en cours) | Haute | Moyen (pression sur prix et différenciation) | Permanent | Positionnement exclusif sur catégories vides (quêtes, proxy, framework minigames, bibliothèque MMO), refus du territoire admin/QoL/UI déjà saturé par DarkhaxDev & co, monétisation par la profondeur MMO pas par la largeur |
|
||||||
|
| **Hypixel Studios absorbe les top devs** (précédent Violet, mars 2026) | Moyenne | Moyen (shrinkage du marché senior) | 12–24 mois | Soit candidater ouvertement chez Hypixel Studios comme backup, soit verrouiller la marque MYTHLANE comme entité B2B impossible à absorber individuellement |
|
||||||
|
| **Piratage / cracking** (norme MC : 70 %+ sur certains marchés) | Moyenne | Moyen (lifetime revenue réduit 30–50 %) | Permanent | Distribution BuiltByBit (anti-piratage natif) + licensing serveur custom pour les bundles premium, focus sur le service (support, config custom) que le piratage ne réplique pas |
|
||||||
|
| **Commoditisation du tarif plugin** (Fiverr à $45, Upwork à $10–15/h) | Haute | Moyen (pression sur les ventes entry-level) | Permanent | Ne jamais concurrencer sur l'entry-level, se positionner exclusivement senior €60–100/h, vitrine Mythlane comme barrière à l'entrée qualitative |
|
||||||
|
| **Retard d'adoption serveurs vs. Minecraft** (1 221 serveurs vs. centaines de milliers MC) | Haute | Élevé (volumes ventes × 10 moins que MC) | 12–24 mois | Pivoter productisation vers les 30–50 serveurs flagship (ARPU élevé) plutôt que la masse, tarifs bundle adaptés aux MMORPG/RPG networks |
|
||||||
|
| **Concours New Worlds ($100K) sature l'attention avril-mai 2026** | Certaine | Faible-Moyen (bruit signal, baisse des ventes post-concours) | 1–2 mois | Soit participer avec un concept différenciant (quêtes MMO), soit timer le lancement commercial après la fin du concours (28 avril 2026) |
|
||||||
|
| **Lock-in plateforme BuiltByBit** (9,9 % commission, dépendance totale) | Moyenne | Moyen | Permanent | Dualiser BBB + vente directe MYTHLANE.dev dès le début, construire mailing-list et Discord propres |
|
||||||
|
| **Surcoût Kotlin-stdlib shading** (jar size, conflits) | Faible | Faible | Permanent | Relocalisation systématique via Shadow + test de chargement avec HyFixes en dev |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Sources citées en prose
|
||||||
|
|
||||||
|
Les sources utilisées dans ce rapport sont nommées en ligne au fil du texte (CurseForge/Overwolf communiqué janvier 2026, HytaleCharts pour les classements downloads, BuiltByBit pour les volumes marchands et le tag-count des catégories, ActivePlayer.io pour les estimations MAU/DAU algorithmiques, blog officiel hytale.com pour la stratégie modding et les patch notes Update 1–5, support.hytale.com pour le manuel serveur, GitHub HytaleModding pour le template officiel, hytalekt.vercel.app pour la DSL Kotlin, joxii.xyz et builtbybit.com pour les profils développeurs, hyclash.com et hytown.org pour les serveurs phares, windowscentral.com pour le recrutement Violet, polymart.org et spigotmc.org pour le benchmark Minecraft, pitchbook.com pour le dossier Craftaro-Songoda, mineacademy.org pour la stratégie multi-revenus). Confiance : les volumes BuiltByBit, tarifs Nekio/Primax/HyGuard, statuts SDK et templates officiels sont en **Haute**. Les MAU/DAU Hytale, les estimations TAM, et les tarifs bespoke non publiés sont en **Moyenne/Faible** et marqués comme tels tout au long du rapport.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Conclusion — Trois convictions à retenir
|
||||||
|
|
||||||
|
**La fenêtre d'entrée n'est pas un fantasme, elle est quantifiable et courte.** À 235 créateurs Hytale recensés et ~295 plugins payants en circulation après 3,5 mois, le marché est encore à 1–2 % de la densité Minecraft. Un senior Kotlin avec portfolio et serveur vitrine entre avant la vague, pas au milieu. Cette fenêtre se referme mécaniquement avec chaque mois d'afflux de devs Paper/Spigot qui migrent naturellement vers Java 25.
|
||||||
|
|
||||||
|
**Le vrai actif différenciant de MYTHLANE n'est pas la stack technique — c'est Mythlane lui-même.** Les 25–30 devs Hytale publics identifiés vendent tous du code sans produit fini en production. Un MMORPG Mythlane opérationnel, même modeste, produit une preuve de livraison que ni Fiverr ni Upwork ne peuvent répliquer. La stratégie gagnante capitalise cette asymétrie : le serveur vitrine valide chaque plugin, et chaque plugin premium amortit le développement du serveur. C'est exactement le pattern MineAcademy × MassiveCraft qui a défini les top revenus du marché Minecraft.
|
||||||
|
|
||||||
|
**Le pari asymétrique est sur les catégories vides.** Quêtes, proxy réseau, frameworks minigames avec matchmaking, bibliothèques MMO — aucune de ces catégories n'a de champion gratuit dominant sur CurseForge ni de concurrent premium crédible sur BuiltByBit. Le même effort placé sur un énième plugin d'économie (27 concurrents) produira un cinquième des revenus d'un plugin de quêtes productisé pour les 30–50 serveurs RPG flagship. Dans un marché dont le TAM court-terme est contraint, la discipline de niche vaut plus que la largeur de catalogue.
|
||||||
@@ -0,0 +1,277 @@
|
|||||||
|
# Hytale Plugin Ideas — Backlog (30 concepts)
|
||||||
|
|
||||||
|
Pipeline long terme. Les 5 sélectionnés pour Phase 10 sont dans `PLUGINS.md` (GravityFlip, FireballStaff, ShadowClone, GrapplingHook, EarthquakeSlam).
|
||||||
|
|
||||||
|
Tous ces concepts suivent la même règle : **1-2 jours de code max, visuellement fort (gif-friendly), wow factor**, mais **rééquilibrés vers les catégories sous-servies** identifiées dans l'analyse de marché Hytale avril 2026 (source : rapport interne).
|
||||||
|
|
||||||
|
**Priorité catégories selon marché** (moins saturé → plus saturé) :
|
||||||
|
- ⭐⭐⭐ Magie (1 plugin payant recensé) — opportunité max
|
||||||
|
- ⭐⭐⭐ Quêtes & NPCs (catégorie quasi vide)
|
||||||
|
- ⭐⭐⭐ Patches/fixes utility (2 plugins payants)
|
||||||
|
- ⭐⭐ Anti-triche (2 plugins gratuits seulement)
|
||||||
|
- ⭐⭐ Bibliothèques utility (6 plugins)
|
||||||
|
- ⭐⭐ Intégrations Discord (6 plugins)
|
||||||
|
- ⭐ Combat unique / counter-play (dans les 120 RPG mais mechanics différenciantes)
|
||||||
|
- ⭐ MMO mechanics (dungeon keys, classes, stats)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔮 Magie & Sorts (catégorie vide payant — opportunité max)
|
||||||
|
|
||||||
|
### 1. FrostBreath ⭐⭐⭐
|
||||||
|
Item "souffle glacé" qui gèle les blocs d'eau en glace devant le joueur et met les mobs en stase bleue 3s.
|
||||||
|
- Ray-cast 8 blocs + block replace `WATER → ICE` temporaire (scheduler revert)
|
||||||
|
- `entity.addPotionEffect(SLOWNESS 60 ticks amp 10)` sur mobs touchés
|
||||||
|
- Particles `SNOWFLAKE` + `ITEM_SNOWBALL` au breath
|
||||||
|
- 1j de code. Gif satisfaction max, catégorie magie sous-servie.
|
||||||
|
|
||||||
|
### 2. LightningWand ⭐⭐⭐
|
||||||
|
Bâton qui invoque la foudre au point visé (ray-cast 30 blocs). Dégâts AoE + stun 1s dans un rayon de 3.
|
||||||
|
- `player.getEyeLocation().getDirection()` + ray trace
|
||||||
|
- `world.strikeLightningEffect(loc)` + `createExplosion(loc, 1.0f, false)` damage only
|
||||||
|
- Cooldown 3s, animation particle trail avant l'impact
|
||||||
|
- 1j. Visuellement épique, aucun concurrent direct.
|
||||||
|
|
||||||
|
### 3. HealingAura ⭐⭐⭐
|
||||||
|
Item "healing orb" posé → zone circulaire 5 blocs pendant 10s qui soigne les alliés et buff regen. Particules vertes cascade.
|
||||||
|
- `spawnEntity(ArmorStand)` invisible au centre + tick task 200 ticks
|
||||||
|
- Chaque tick : scan joueurs in radius, `setHealth(min(+0.5, max))` + particles `HAPPY_VILLAGER`
|
||||||
|
- Distinction ami/ennemi via teams ou simple "pas-moi" fallback
|
||||||
|
- 1j. Pattern support, rare en Hytale payant.
|
||||||
|
|
||||||
|
### 4. PoisonCloud Grenade ⭐⭐⭐
|
||||||
|
Grenade lancée → explosion en nuage vert toxique 4 blocs, dure 8s, damage-over-time + slow.
|
||||||
|
- `Snowball` reskin vert, `ProjectileHitEvent` → spawn cloud
|
||||||
|
- Tick task 160 ticks : scan entities, `addPotionEffect(POISON 40 amp 1)` + particles `VILLAGER_ANGRY`
|
||||||
|
- Alternative PvP/PvE, catégorie magie
|
||||||
|
- 1j. Simple mais visuellement satisfaisant.
|
||||||
|
|
||||||
|
### 5. TeleportScroll ⭐⭐⭐
|
||||||
|
Parchemin usable : right-click pose un marker persistent. Right-click 2e fois depuis ailleurs = TP retour à la marker (consommé).
|
||||||
|
- PDC store `Location` dans l'item NBT à la pose
|
||||||
|
- Charge 1 utilisation par scroll, message visuel hologram "Marker set" au sol
|
||||||
|
- Animation TP : fade-out particles + `world.strikeLightningEffect`
|
||||||
|
- 1j. Utility magique, exploration-friendly.
|
||||||
|
|
||||||
|
### 6. WindPush ⭐⭐⭐
|
||||||
|
Sort "souffle de vent" qui repousse tous les entités dans un cône de 6 blocs devant le joueur avec particules blanches.
|
||||||
|
- Cône calc : scan entities, angle vector < 45° = push
|
||||||
|
- `entity.setVelocity(direction * 2.5)` + particles `CLOUD` + son whoosh
|
||||||
|
- Cooldown 4s, item `wind_scroll` charge 5 uses
|
||||||
|
- 1j. Counter-play PvP, gif max.
|
||||||
|
|
||||||
|
### 7. ShockwaveFist ⭐⭐
|
||||||
|
Gant custom : poing droit déclenche onde circulaire au sol dans un rayon de 4 blocs qui repousse mobs + casse cobweb/leaves.
|
||||||
|
- Event custom sur `PlayerAnimationEvent` (arm swing) si item en main
|
||||||
|
- Scan blocs radius 4, si cobweb/leaves → break, entities → knockback
|
||||||
|
- Particles `EXPLOSION_NORMAL` en ground ripple
|
||||||
|
- 1j. Variante rapide d'EarthquakeSlam, peut se substituer.
|
||||||
|
|
||||||
|
### 8. SummoningSpear ⭐⭐⭐
|
||||||
|
Lance magique : pose un point d'attraction (cristal flottant) 10s, tous les mobs ennemis dans 20 blocs sont téléportés vers lui.
|
||||||
|
- Lance lancée + `ProjectileHitEvent` → spawn armorstand cristal (texture custom)
|
||||||
|
- Tick task 200 ticks : scan mobs hostiles, `teleport(crystal.loc.add(rand, 0, rand))`
|
||||||
|
- Perfect pour mob-farming automatique / AoE clearing
|
||||||
|
- 1.5j. Catégorie magie, très utile.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📜 Quêtes & NPCs légers (catégorie quasi vide)
|
||||||
|
|
||||||
|
### 9. SimpleQuestNPC ⭐⭐⭐
|
||||||
|
NPC statique qui donne une quête basique "tuer 10 zombies" avec dialogue + reward. MVP du marché quêtes.
|
||||||
|
- Spawn NPC via commande admin, configure via YAML
|
||||||
|
- Inventory dialog (pattern Bukkit) : "Accept / Decline"
|
||||||
|
- Tracker kills in PDC, auto-complete + `giveItem(reward)` à la fin
|
||||||
|
- 2j. Catégorie VIDE, premier plugin sur le marché gagne la position dominante.
|
||||||
|
|
||||||
|
### 10. WanderingMerchant ⭐⭐⭐
|
||||||
|
NPC marchand qui spawn aléatoirement sur la map (pattern Zelda BotW), vend 3 items rares, disparaît après 30 min.
|
||||||
|
- Scheduler toutes les 2h, pick random chunk actif + spawn
|
||||||
|
- Inventory trade menu (configure items via YAML)
|
||||||
|
- Annonce globale "A merchant appeared near [x,z]!" avec lien coord
|
||||||
|
- 1.5j. Event gameplay, catégorie quêtes/NPC sous-servie.
|
||||||
|
|
||||||
|
### 11. BountyBoard ⭐⭐⭐
|
||||||
|
Block "wanted board" : right-click pour poser une prime en gold sur un joueur. Tuer la cible = payout auto au tueur.
|
||||||
|
- Block custom + inventory UI "Place bounty" / "View bounties"
|
||||||
|
- Stockage YAML : `{ target_uuid, amount, poster_uuid }`
|
||||||
|
- `PlayerDeathEvent` → check si target matches, payout killer via economy API
|
||||||
|
- 1.5j. Social gameplay driver, catégorie PvP rare.
|
||||||
|
|
||||||
|
### 12. EchoLocation Sonar ⭐⭐⭐
|
||||||
|
Item "sonar crystal" → burst visuel radial qui révèle pendant 5s la position de tous les mobs dans 15 blocs (outline brillant) + les aggro vers toi.
|
||||||
|
- Item `sonar_crystal` charge 5 uses, cooldown 10s
|
||||||
|
- Scan `world.getNearbyEntities` radius 15
|
||||||
|
- Glow effect via `entity.setGlowing(true)` pendant 5s (scheduler revert)
|
||||||
|
- Aggro force : pour chaque hostile, `mob.setTarget(player)` + particles `SOUL_FIRE_FLAME` en cercle
|
||||||
|
- 1j. Exploration + combat setup, unique visuel (pas dans baseline, pas de conflit BetterMap).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚔️ Combat & Counter-play unique
|
||||||
|
|
||||||
|
### 13. ParryWindow ⭐⭐
|
||||||
|
Timing-based parry : si tu right-click dans les 200ms avant d'être touché, tu annules le dégât et stun 2s l'attaquant avec particules clashes.
|
||||||
|
- `EntityDamageByEntityEvent` priority HIGHEST
|
||||||
|
- Check dernière action right-click du défenseur (PDC timestamp)
|
||||||
|
- Si < 200ms → `setDamage(0)` + `attacker.addPotionEffect(SLOWNESS 40)` + particles `CRIT_MAGIC`
|
||||||
|
- 1j. Skill-based combat, différenciant PvP.
|
||||||
|
|
||||||
|
### 14. RevengeMark ⭐⭐
|
||||||
|
Premier coup porté = mark visuel au-dessus de l'attaquant (hologram rouge). Ton contre-attaque sur marked = +50% damage + particules feu.
|
||||||
|
- `EntityDamageByEntityEvent` → PDC mark sur attacker (TTL 10s)
|
||||||
|
- Hologram visible pour le défenseur uniquement (packet per-player)
|
||||||
|
- Scale damage event suivant si victim → attacker + marked
|
||||||
|
- 1j. Counter-play gameplay, catégorie combat niche.
|
||||||
|
|
||||||
|
### 15. BloodBlade ⭐⭐
|
||||||
|
Épée custom : chaque hit réussi te soigne de 10% des dégâts infligés. Particules de sang aux coups critiques.
|
||||||
|
- Item `blood_blade` + `EntityDamageByEntityEvent` sur wielder
|
||||||
|
- `setHealth(min(+damage*0.1, maxHealth))` + particles `REDSTONE` (rouge)
|
||||||
|
- Cooldown soin 1s pour éviter abuse
|
||||||
|
- 0.5j. Classique vampirique, mais toujours recherché.
|
||||||
|
|
||||||
|
### 16. CounterAttack Shield ⭐⭐
|
||||||
|
Bouclier spécial : bloc dans une fenêtre de 200ms suivant un coup reçu = reflect 50% damage + stun 1.5s.
|
||||||
|
- Similar à ParryWindow mais triggered par shield sneak
|
||||||
|
- `entity.addPotionEffect(SLOWNESS 30 amp 3)` + damage reflect calc
|
||||||
|
- Cooldown 5s pour skill expression
|
||||||
|
- 1j. Counter-play, catégorie combat premium.
|
||||||
|
|
||||||
|
### 17. SoulLink ⭐⭐⭐
|
||||||
|
Sort qui lie 2 joueurs : HP partagés, death d'un = teleport instant de l'autre à sa tombe. Particules chaîne violette visible.
|
||||||
|
- Item "soul linker" = bond permanent jusqu'à cast `/unlink`
|
||||||
|
- Tick task : sync `max(p1.hp, p2.hp) / 2` via PDC
|
||||||
|
- `PlayerDeathEvent` sur linked → téléport partner + revive avec 1HP
|
||||||
|
- 1j. Mécanique coop unique, catégorie vide.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛡️ Anti-triche léger (catégorie sous-servie)
|
||||||
|
|
||||||
|
### 18. AFK Spotlight ⭐⭐
|
||||||
|
Détecte les joueurs AFK (>5 min sans input) → pillar lumineuse au-dessus d'eux + tag hologram "[AFK]". Staff tools.
|
||||||
|
- `PlayerMoveEvent` refresh timestamp PDC
|
||||||
|
- Scheduler chaque 30s : check dernière activité, si > 300s → spawn particles vertical
|
||||||
|
- Commande admin `/afkkick <time>` bonus
|
||||||
|
- 1j. Utility admin, catégorie anti-triche light.
|
||||||
|
|
||||||
|
### 19. FastHand Detector ⭐⭐⭐
|
||||||
|
Compte les clicks/s d'un joueur. Au-delà d'un seuil (15 CPS) = notif Discord staff + log anti-bot.
|
||||||
|
- `PlayerInteractEvent` → increment counter sliding window 1s
|
||||||
|
- Si > threshold → webhook Discord avec timestamp + logs
|
||||||
|
- Permissions `/fasthand.bypass` pour staff légit
|
||||||
|
- 1j. Light anti-cheat, catégorie vraiment vide.
|
||||||
|
|
||||||
|
### 20. DuplicateItem Finder ⭐⭐⭐
|
||||||
|
Tool admin qui scanne tous les inventories (online + offline via NBT) pour détecter des items avec même UUID PDC.
|
||||||
|
- Commande `/finddupes <item_uuid_tag>` scan players
|
||||||
|
- Output Discord webhook : liste joueurs + locations
|
||||||
|
- Utile pour dupe glitches après un patch compromis
|
||||||
|
- 1j. Anti-triche spécifique, niche monétisable.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🤖 Discord & Intégrations (catégorie 6 plugins seulement)
|
||||||
|
|
||||||
|
### 21. DeathFeed Discord ⭐⭐
|
||||||
|
Chaque mort PvP/PvE postée live sur un channel Discord avec embed (tueur, victime, arme, lieu).
|
||||||
|
- `PlayerDeathEvent` + JDA/Kord webhook
|
||||||
|
- Embed formatted : avatar Minecraft via API mcheads, location
|
||||||
|
- Config filter par type (PvP only / PvE only / all)
|
||||||
|
- 0.5j. Léger, mais fréquemment demandé.
|
||||||
|
|
||||||
|
### 22. ChatBridge Discord ⭐⭐⭐
|
||||||
|
Chat in-game ↔ Discord channel bidirectionnel. Format configurable, mentions Discord → @ en jeu.
|
||||||
|
- Webhook Discord outbound (easy) + bot inbound via JDA
|
||||||
|
- `AsyncPlayerChatEvent` → send embed
|
||||||
|
- Listener Discord message → broadcast en jeu avec préfixe `[Discord] Username`
|
||||||
|
- 0.5j. Classique mais 6 concurrents seulement, place à prendre.
|
||||||
|
|
||||||
|
### 23. JoinLeave Notifier ⭐
|
||||||
|
Event `join/leave` → message Discord embed avec count live des joueurs online et uptime serveur.
|
||||||
|
- `PlayerJoinEvent` + `PlayerQuitEvent` + webhook
|
||||||
|
- Embed color vert/rouge, count via `Bukkit.getOnlinePlayers().size()`
|
||||||
|
- Optional : nouveau record de joueurs → alert spéciale
|
||||||
|
- 0.5j. Quickwin, petit mais utile.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧰 Mini-bibliothèques utility (catégorie 6 plugins — place pour des micros)
|
||||||
|
|
||||||
|
### 24. Hologram Pro ⭐⭐⭐
|
||||||
|
API simple pour créer des holograms (texte flottant) avec animation, multi-lignes, updates temps réel.
|
||||||
|
- Class `Hologram(location, lines)` + `.update()`, `.animate()`, `.remove()`
|
||||||
|
- Basé sur `ArmorStand` invisible markers (pattern standard)
|
||||||
|
- Fade-in/fade-out via packet or scheduler
|
||||||
|
- 1.5j. Utility dev utile, peut devenir dépendance d'autres plugins.
|
||||||
|
|
||||||
|
### 25. SmoothCamera Cinematic ⭐⭐
|
||||||
|
API cam en vol pour cinematics admin (trailers serveur, cutscenes). Courbe Bezier entre waypoints.
|
||||||
|
- Commande `/cam record` + `/cam play` (record waypoints)
|
||||||
|
- Bezier interpolation smooth entre points
|
||||||
|
- `player.setGameMode(SPECTATOR)` + teleport tick by tick
|
||||||
|
- 1j. Niche mais demandée pour serveurs RPG communication.
|
||||||
|
|
||||||
|
### 26. ConfigReload Master ⭐
|
||||||
|
Commande unique `/configreload` qui scanne tous les plugins et reload les configs sans `/reload` (évite les memory leaks).
|
||||||
|
- Reflection sur `Plugin.reloadConfig()` de tous les plugins chargés
|
||||||
|
- Whitelist configurable (évite reload des plugins incompatibles)
|
||||||
|
- Log détaillé per-plugin status
|
||||||
|
- 0.5j. Utility admin, quick-win.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 MMO RPG mechanics (serveurs flagship demande concrète)
|
||||||
|
|
||||||
|
### 27. RuneInscriber ⭐⭐⭐
|
||||||
|
Table custom où le joueur grave des runes sur des items pour effets custom (lifesteal 3%, speed, fortune, thorns).
|
||||||
|
- Block "rune table" + inventory GUI
|
||||||
|
- Slot item + slot rune stone + anvil button
|
||||||
|
- NBT write modifier custom, event listener apply effect
|
||||||
|
- 1.5j. RPG feature majeure, demandé par tous les serveurs MMO.
|
||||||
|
|
||||||
|
### 28. DungeonKey ⭐⭐⭐
|
||||||
|
Clé consommable qui ouvre une porte-instance unique. Crée une instance privée du donjon pour le joueur + party.
|
||||||
|
- Item `dungeon_key` + `PlayerInteractEvent` sur block `dungeon_door`
|
||||||
|
- Schematic paste de la zone instance
|
||||||
|
- Teleport party + lock le door après entry
|
||||||
|
- 1.5j. Mechanic MMO rare, monétisable.
|
||||||
|
|
||||||
|
### 29. PartyHPBar ⭐⭐
|
||||||
|
HP bar visible au-dessus des teammates de ta party (hologram per-player). Changement couleur selon HP %.
|
||||||
|
- `scoreboard` or armorstand packet per viewer
|
||||||
|
- Update tick task si health change
|
||||||
|
- Couleur : vert > 60%, jaune > 30%, rouge sinon
|
||||||
|
- 1j. QoL MMO, catégorie party sous-servie.
|
||||||
|
|
||||||
|
### 30. Storm Seal Talisman ⭐⭐⭐
|
||||||
|
Talisman qui charge l'énergie pendant les orages (visible jauge hologram au-dessus du joueur). Clic droit = décharge AoE de foudre dans 8 blocs. Accumulation passive.
|
||||||
|
- Item `storm_seal` persistent avec PDC `charge: Float`
|
||||||
|
- `WeatherChangeEvent` STORM → tick task augmente charge + 0.1/seconde si le joueur est outdoor
|
||||||
|
- Hologram jauge au-dessus du joueur quand charge > 0 (scheduler update)
|
||||||
|
- Clic droit si charge ≥ 0.5 → `world.strikeLightningEffect()` × 3 aléatoire dans radius 8 + damage AoE, reset charge
|
||||||
|
- 1.5j. Unique (pas de "food buff" vanilla-like, pas de conflit Wan's Wonder Weapons ni RPG Leveling). Weather interaction rare.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Concepts tirés d'analyse de marché (avril 2026) rééquilibrés vers catégories sous-servies : **magie, quêtes, patches/anti-triche, intégrations Discord** sont les zones vides prioritaires
|
||||||
|
- Tous les concepts restent **1-2 jours max**, **gif-friendly**, alignés avec le principe "wow + dev rapide"
|
||||||
|
- **Audit concurrence gratuite** : aucun concept ne duplique les dominants cités dans l'analyse (BetterMap 502K maps, EyeSpy 407K spy, Wan's Wonder Weapons 342K custom weapons, RPG Leveling 277K, MMO Skill Tree 251K, Advanced Item Info 232K, Overstacked 209K stacks, Simply Trash 192K, Vein Mining 184K, Spellbook 181K magic framework).
|
||||||
|
- **TreasureHunt Map** (version ancienne) remplacé par **EchoLocation Sonar** (#12) → évite conflit BetterMap
|
||||||
|
- **StatBoost Food** (version ancienne) remplacé par **Storm Seal Talisman** (#30) → évite conflit Wan's Wonder Weapons + RPG Leveling
|
||||||
|
- Plusieurs concepts sont complémentaires → bundles possibles (ex: FrostBreath + LightningWand + HealingAura = "Spell Pack" $15)
|
||||||
|
- Les 5 plugins actifs pour Phase 10 restent dans `PLUGINS.md` (GravityFlip, ChainLightning Sceptre, ShadowClone, GrapplingHook, EarthquakeSlam)
|
||||||
|
|
||||||
|
## Pipeline Suggéré (post Phase 10)
|
||||||
|
|
||||||
|
Si Phase 10 convertit en clients :
|
||||||
|
- **Batch 2 (v1.3)** — Spell Pack : FrostBreath (#1), LightningWand (#2), HealingAura (#3) → bundle magie premium $15
|
||||||
|
- **Batch 3 (v1.4)** — MMO Essentials : RuneInscriber (#27), DungeonKey (#28), PartyHPBar (#29) → bundle MMO $20
|
||||||
|
- **Batch 4 (v1.5)** — Admin Suite : AFK Spotlight (#18), FastHand Detector (#19), DuplicateItem Finder (#20) → bundle admin $15
|
||||||
|
- **Batch 5 (v1.6)** — Combat Unique : ParryWindow (#13), RevengeMark (#14), CounterAttack Shield (#16), SoulLink (#17) → bundle combat $18
|
||||||
|
|
||||||
|
**Frameworks long terme (Phase 12+)** : myth_lib OSS, Quest Framework, MythGuard Anti-Cheat MMO, MythArena matchmaking — pas dans ce backlog, planning séparé (2-6 semaines chacun).
|
||||||
+82
@@ -0,0 +1,82 @@
|
|||||||
|
# Plugins Hytale — Phase 10 (v1.2)
|
||||||
|
|
||||||
|
5 plugins **wow + dev rapide (1-2j)** ciblés pour gif Twitter/Discord + DMs. Après analyse de marché (avril 2026), j'ai rééquilibré les 4 remplacements vers des catégories **moins saturées** quand possible (magie = 1 seul plugin payant, système de classes rare, combat-counter spécifique).
|
||||||
|
|
||||||
|
Chaque plugin reste **simple à coder, visuellement fort**, et produit un gif 5-10s clip-ready. Les frameworks sérieux (myth_lib OSS, Quest Framework, MythGuard, MythArena) sont déplacés en Phase 12+ (roadmap longue, 2-6 semaines chacun).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. GravityFlip Region (~1j)
|
||||||
|
**Repo :** `hytale-gravity-flip`
|
||||||
|
|
||||||
|
Block custom qui définit une zone. Toute entité qui entre a sa gravité inversée (marche plafond, items tombent vers le haut).
|
||||||
|
- Hook `PlayerMoveEvent`, check région, flip `velocity.y`
|
||||||
|
- Commande : `/gravityflip define <name>` pour capturer 4 corners ou alors un item (giveable ou craftable comme le //wand pour set pos1 et 2)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. ChainLightning Sceptre (~1j)
|
||||||
|
**Repo :** `hytale-chain-lightning`
|
||||||
|
**Catégorie marché :** Magie (1 seul plugin payant sur BBB — quasi-vide). **Différentiation vs Wan's Wonder Weapons (342K free)** : ce n'est pas un projectile classique, c'est une mécanique de chaînage visuellement unique.
|
||||||
|
|
||||||
|
Bâton magique : cible un mob → la foudre saute de cible en cible (max 5 targets dans un rayon de 8 blocs entre chaque saut), avec dégâts dégressifs et traînées électriques visibles.
|
||||||
|
- Item custom `chain_lightning_sceptre` cooldown 4s
|
||||||
|
- Ray-cast 25 blocs → find first entity
|
||||||
|
- BFS entity graph : chaque cible ajoute la suivante la plus proche (radius 8), skip déjà-hit, max 5 chaînes
|
||||||
|
- Damage dégressif : 8, 6, 4, 3, 2 HP
|
||||||
|
- Particles `ELECTRIC_SPARK` + `END_ROD` en ligne entre chaque paire de cibles
|
||||||
|
- Son `lightning_bolt` atténué à chaque saut
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. ShadowClone Decoy (~1j)
|
||||||
|
**Repo :** `hytale-shadow-clone`
|
||||||
|
**Catégorie marché :** Combat unique / anti-death (gameplay-saving, catégorie peu exploitée)
|
||||||
|
|
||||||
|
Juste avant la mort (HP < 2), spawn automatique d'un clone immobile qui tank le prochain hit pendant que le joueur devient invisible 2s et téléporte 5 blocs en arrière. Cooldown 60s.
|
||||||
|
- `EntityDamageEvent` priority HIGHEST → si health - damage ≤ 2 et pas en cooldown
|
||||||
|
- Spawn NPC clone (skin du joueur) à la position actuelle
|
||||||
|
- `player.setInvisible(true)` + teleport derrière + particles `SMOKE`
|
||||||
|
- Next damage sur le clone → clone.remove() + particles `POOF`
|
||||||
|
- Cooldown stocké en PDC (PersistentDataContainer)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. GrapplingHook (~1.5j)
|
||||||
|
**Repo :** `hytale-grappling-hook`
|
||||||
|
**Catégorie marché :** Mouvement (classique mais toujours demandé, pattern Spider-Man recognizable)
|
||||||
|
|
||||||
|
Hook custom lancé, s'accroche au premier block/entité touché, tire le joueur vers le point d'ancrage avec animation de rope en particules.
|
||||||
|
- Item `grappling_hook` right-click → `launchProjectile(CustomProjectile)` linear
|
||||||
|
- `ProjectileHitEvent` → calcule vecteur (hit_loc - player.loc), `player.setVelocity(vec.normalize().multiply(1.8))`
|
||||||
|
- Particle line entre joueur et point d'impact pendant le pull (tick task `DUST` noir)
|
||||||
|
- Block hit = pull fort, entité hit = pull vers l'entité (combat grab)
|
||||||
|
- Cooldown 5s, range max 20 blocs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. EarthquakeSlam (~1j)
|
||||||
|
**Repo :** `hytale-earthquake-slam`
|
||||||
|
**Catégorie marché :** Combat AoE visuel (gif-ready max, onde de choc)
|
||||||
|
|
||||||
|
Saut en hauteur (>5 blocs chute) → impact au sol = onde de choc circulaire qui repousse et stun 2s les mobs dans un rayon de 6 blocs. Particles ripple ground dramatique.
|
||||||
|
- `PlayerMoveEvent` détecte fall state (`fallDistance >= 5` + `isOnGround`)
|
||||||
|
- Scan entities in radius 6 via `world.getNearbyEntities(loc, 6, 2, 6)`
|
||||||
|
- Knockback vector = (entity.loc - player.loc).normalize().multiply(1.5)
|
||||||
|
- `entity.addPotionEffect(SLOWNESS 80 ticks amplifier 5)` pour stun
|
||||||
|
- Particles ripple : `BLOCK_CRACK` (dirt/stone) en cercle expanding 3 ticks
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- **Stack commune** : Java ou Kotlin (first-class supporté), JDK 17+, Gradle Kotlin DSL
|
||||||
|
- **Package** : `fr.killiandalcin.hytale.<plugin>`
|
||||||
|
- **License** : MIT (permissif, encourage usage et SEO)
|
||||||
|
- **README chaque repo** : hero gif 5-10s, tagline EN, features, install, commands, lien portfolio
|
||||||
|
- **Distribution** : GitHub public (kayjaydee/hytale-*) + release jar attachée à chaque tag v0.x.0. **Pas Fiverr** (destruction positionnement selon analyse de marché)
|
||||||
|
- **Cible contenu** : 1 gif par plugin à poster sur Twitter/Discord HytaleModding, + portfolio killiandalcin.fr/hytale section "Live Demos"
|
||||||
|
- **Ordre de ship suggéré** : GravityFlip (#1) d'abord (le plus rapide + impact visuel max), puis ChainLightning Sceptre (#2) + EarthquakeSlam (#5) pour compléter le trio visuellement fort, puis ShadowClone (#3) et GrapplingHook (#4) comme mécaniques plus avancées
|
||||||
|
- **Audit concurrence** : Aucun des 5 plugins ne duplique les dominants gratuits cités dans l'analyse (BetterMap 502K, EyeSpy 407K, Wan's Wonder Weapons 342K, RPG Leveling 277K, MMO Skill Tree 251K, Spellbook 181K). FireballStaff remplacé par ChainLightning Sceptre pour éviter le conflit direct avec Wan's (custom weapons génériques)
|
||||||
|
|
||||||
|
**Effort total estimé : ~6.5 jours** (vs. 10j des 5 précédents). Rééquilibrage vers catégories sous-servies quand possible sans sacrifier le "wow rapide".
|
||||||
+342
@@ -0,0 +1,342 @@
|
|||||||
|
# Hytale/Minecraft Plugin Pricing Elasticity & Packaging Strategy for a Senior Solo Developer
|
||||||
|
*Deep research brief for killiandalcin.fr — compiled April 24, 2026*
|
||||||
|
|
||||||
|
> **FX note.** All prices below use **1 EUR ≈ 1.17 USD**, the ECB reference rate published 22 April 2026 ([European Central Bank](https://www.ecb.europa.eu/stats/shared/pdf/eurofxref.pdf); confirmed by the spot quote of EUR/USD 1.1689 on 24 April 2026, [Trading Economics](https://tradingeconomics.com/euro-area/currency)). Ranges are rounded for readability.
|
||||||
|
>
|
||||||
|
> **Hytale data caveat.** Hytale Early Access launched 13 January 2026 ([Hytale.com](https://hytale.com/news/2026/1/hytale-is-finally-here)), and official plugin tooling (Java 25 JDK, `com.hypixel.hytale.plugin`) is still in active maturation ([HytaleModding docs, Jan 16 2026](https://britakee-studios.gitbook.io/hytale-modding-documentation/plugins-java-development/07-getting-started-with-plugins); [Hytalemodding.dev](https://hytalemodding.dev/en/docs/guides/plugin/setting-up-env)). Paid Hytale plugin activity on BuiltByBit is only ~3 months old and sample sizes are small (single-digit to low-double-digit purchase counts). **Wherever Hytale-specific data is thin I triangulate from analogous Minecraft evidence and flag the extrapolation inline.**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Executive answer (read first)
|
||||||
|
|
||||||
|
The Minecraft/Hytale plugin market is structurally **barbell-shaped**: there is a huge mass-market floor at $5–25 driven by Fiverr gigs and BBB resources, and a thin premium ceiling at $75–150/hour (or $2k–15k per project) for servers with real revenue. The middle collapses fast because leaks on BlackSpigot and undercutters on Fiverr ([as low as $5–10](https://www.fiverr.com/gigs/bukkit); [Arc.dev analysis](https://arc.dev/hire-developers/minecraft)) commoditise anyone who wades in without a moat.
|
||||||
|
|
||||||
|
For a **senior-positioned French auto-entrepreneur** with a CDI day job, the defensible pricing strategy is:
|
||||||
|
|
||||||
|
1. **Refuse the €10–50/project floor entirely.** Do not list on Fiverr. That channel destroys senior positioning faster than it generates revenue ([Fiverr Community forum: "race to the bottom"](https://community.fiverr.com/public/forum/boards/support-and-troubleshooting-by1/posts/324060-value-for-money-is-a-race-to-the-bottom)).
|
||||||
|
2. **Set a public TJM (day rate) of €450–650 (~$525–760)** — the French market midpoint for a confirmed Java dev with 7 yrs experience is ~€374–521/day and seniors run €400–810 ([Freelance.com](https://www.freelance.com/devenir-freelance/le-tjm-dun-developpeur-java/); [Portage360](https://www.portage360.fr/tjm-developpeur-en-france/); [Embarq](https://www.embarq.fr/tjm/tjm-java)). Senior Minecraft-specific work on Arc and similar vetted boards runs $60–100+/hour which translates to roughly $480–800/day ([Arc.dev](https://arc.dev/hire-developers/minecraft)).
|
||||||
|
3. **Monetize the OSS/myth_lib showcase as lead-gen**, not as a product. The conversion path is: free Mythlane plugins + GitHub → bespoke scoped builds → retainer. This matches the ItemsAdder/MythicMobs/Lands pattern of a free or cheap core that pulls paying servers into higher-priced ecosystems (premium versions, config packs, addons — e.g. MythicMobs lifetime premium at $39.99 with $4.99–9.99/mo recurring tiers, [Answer Overflow](https://www.answeroverflow.com/m/1283816171451191440)).
|
||||||
|
4. **Package around scoped outcomes (not hours)** at three anchored tiers so the hobbyist can't "scope down" the senior offer and the flagship can't "scope up" a cheap one — see the three concrete packages in §3.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Willingness-to-pay per buyer segment — the evidence
|
||||||
|
|
||||||
|
### 1a) Hobbyist solo (single server, teenager / young adult)
|
||||||
|
|
||||||
|
**Real WTP signals.**
|
||||||
|
|
||||||
|
- **Fiverr Minecraft plugin gigs start at $5** (`Deckogaming` explicitly sells a plugin dev gig [from $5](https://www.fiverr.com/deckogaming/minecraft-plugin-developer-and-configurator)), with the visible category lineup anchored at **$5, $10, $15, $20, $25, $40, $45, $80, $95** — no coherent mid-tier signal above $100 ([Fiverr Bukkit category](https://www.fiverr.com/gigs/bukkit)). The "pro" Fiverr top of market is **Jay_gamerz at $95 basic** and he advertises 100+ projects / 4+ years experience ([Fiverr profile](https://www.fiverr.com/jay_gamerz/custom-optimized-minecraft-plugin-development)).
|
||||||
|
- **BBB hire-thread budget anchors.** A recent public thread asks for an "advanced kit PvP plugin with a leaderboard, kit-unlock system" at a budget of **$15** ([BBB "developer for hire" tag](https://builtbybit.com/tags/developer-for-hire/)). Another: "custom battlepass configuration for OP Skyblock — my budget is $10" (same tag page). A full *practice/FFA plugin* with ranked matches was budgeted at **€50–100** on BBB ([Looking for a custom practice plugin, BBB](https://builtbybit.com/threads/looking-for-a-custom-practice-plugin.642064/)). A server owner looking for a moderately complex aim-training plugin budgeted **$100** ([BBB thread](https://builtbybit.com/threads/looking-for-developer-aim-training-plugin-100.695450/)).
|
||||||
|
- **Reference BBB thread on "how much does a plugin cost?"** — community consensus: "charge by the hour, most developers usually charge $15-20 on MC-Market and Spigot, sometimes $25+. Small plugin $30–$40, larger plugin $80–$140, big core → 4–5 figures" ([BBB thread](https://builtbybit.com/threads/how-much-is-developing-a-plugin.695806/)). This is the most honest hobbyist-segment price map that exists publicly.
|
||||||
|
- **Purchase counts on cheap Hytale BBB plugins (first ~3 months).** HyShop Hytale shop plugin at **$9.88 bundle, 37 purchases, 3 ratings** ([BBB](https://builtbybit.com/resources/bundle/hytale-shop-premium-bundle.3309/)); Player Trails $11.99, **47 purchases**; HySpawnBoss $12.99, **31 purchases**; KyuubiSoft SeasonPass $14.99, **21 purchases**; Fixtale fixes/optimisations **18 purchases at $7.99**; jMurder at $13.50 has only **6 purchases**; jBuild $7.50 has **1** ([BBB Hytale plugin listing](https://builtbybit.com/resources/hytale/plugins/)). The pattern is stark: **Hytale unit sales are still single-digit to low-double-digit per plugin in April 2026**, so any Hytale-only premium-plugin strategy is premature.
|
||||||
|
- **Minecraft BBB comparable top-sellers.** LPX AntiPacketExploit ($19.97, **3,783 purchases, 133 ratings**), FlameCord ($5.99, **3,416 purchases**), Matrix AntiCheat ($22.00, **2,651 purchases**) — i.e. the Minecraft "hobbyist/small server" floor converts at volume when it is a utility pain-killer priced under $25 ([BBB Hytale Egg recommendations panel](https://builtbybit.com/resources/hytale-pterodactyl-egg-100-sessions.90101/)).
|
||||||
|
|
||||||
|
**Realistic hobbyist WTP.** **€5–40 (~$6–47)** for a finished plugin resource, **€20–100 (~$23–115)** for a tiny commissioned plugin, hard cap around **€120 (~$140)** beyond which they disengage or go to Fiverr.
|
||||||
|
|
||||||
|
### 1b) Small network (2–5 staff)
|
||||||
|
|
||||||
|
**Real WTP signals.**
|
||||||
|
|
||||||
|
- **BBB hire-thread budget range "€50–€100 per 1-day plugin"** is openly named by the buyer ([BBB "developer" tag](https://builtbybit.com/tags/developer/)).
|
||||||
|
- **Part-time dev retainer culture.** Quora answer from a Minecraft server owner: "I was paying the developers who worked for me around $14–$15/hour" ([Quora](https://www.quora.com/Do-developers-of-Minecraft-servers-make-money)). Another BBB service poster: "€10–€15 per hour or €50 per project" ([BBB "developer" tag](https://builtbybit.com/tags/developer/)).
|
||||||
|
- **Small network rates floor on Upwork/Guru:** Minecraft-specific hires can be found "as low as $10 per hour"; junior devs $20–$40/hr; senior "upwards of $100/hr" ([Upwork hire guide](https://www.upwork.com/hire/minecraft-freelancers/); [Arc.dev](https://arc.dev/hire-developers/minecraft)).
|
||||||
|
- **Config/boss/mob pack pricing** (a proxy for "small network pays $X for finished feature"): MythicMobs boss packs priced **$10–$300** with boss mobs $20+ and 12-hour/month dev retainers at **$20/hour / 12h minimum = $240/mo** ([BBB MythicMobs Professional Setups thread](https://builtbybit.com/threads/mythicmobs-professional-setups-high-quality-no-limit.110269/)).
|
||||||
|
- **Complete server monetization proxies.** A GenPvP Minehut network did **$16k revenue in ~6–7 months (best month $3.7–3.8k)** ([BBB selling tag](https://builtbybit.com/tags/selling/)) — that is the realistic ceiling from which small networks fund dev spend. Dev budgets routinely come out at 5–15% of that.
|
||||||
|
|
||||||
|
**Realistic small-network WTP.** **€80–400 (~$95–470)** per plugin, **€150–600/month (~$175–700)** for light part-time retainers, **€500–2,000 (~$585–2,340)** for a multi-plugin package delivered in 1–3 weeks.
|
||||||
|
|
||||||
|
### 1c) Mid-tier RPG/MMO (5–15 staff, growing)
|
||||||
|
|
||||||
|
**Real WTP signals.**
|
||||||
|
|
||||||
|
- **HyClash (ThirtyVirus, Hytale)** has a publicly stated **$20,000 dedicated budget**, Kubernetes infra, 400+ Discord members pre-launch and a team of "veterans from Blockshot Network" returning after 7 years ([HytaleTop100 article](https://hytaletop100.com/blog/thirtyvirus-announces-hyclash-ambitious-new-hytale-server-network-with-20k-budget)). Their public BBB recruitment post states "you'll be joining a real team with an active codebase and a clear roadmap — Java Developers" but is a volunteer/revshare appeal rather than a contract (Lead Dev auvq in [BBB thread](https://builtbybit.com/threads/open-developers-wanted-for-hyclash-ft-thirtyvirus.737208/)).
|
||||||
|
- **Hytown** describes itself as the "#1 Hytale server network", built "by an experienced team of engineers and game developers from places like SpaceX, Runescape" — aggressively hiring staff/devs/modelers/builders ([Hytown.org](https://www.hytown.org/about-us); [hytale-servers.com](https://hytale-servers.com/server/hytown)). Compensation is not public, but Hytown-tier engineering talent (SpaceX background) implies market rates, not hobby rates — and Hytown is already running custom mount systems and dungeon portal systems that were built by hired freelancers like Joxii ("5+ years of Java, open for commissions"), who explicitly showcases mount/dungeon systems built for Hytown as paid commissions ([joxii.xyz](https://joxii.xyz)).
|
||||||
|
- **Another Hytale hiring post on BBB offers "monthly pay, fast progress, high quality"** for devs who can "help design systems and gameplay ideas" — the role is scoped as recurring paid work rather than one-shot commissions ([BBB thread](https://builtbybit.com/threads/hiring-hytale-developer-s-new-server-project-monthly-pay-fast-progress-high-quality.736777/)).
|
||||||
|
- **Wynncraft explicitly separates "apply via form" (volunteer content team)** from "developer/paid roles — email your resumé to [email protected]" ([Wynncraft application portal](https://ct.wynncraft.com/apply)) — confirming the implicit rule: volunteer for content, *paid* for code.
|
||||||
|
|
||||||
|
**Realistic mid-tier WTP.** **€600–2,500 (~$700–2,900)** per scoped plugin, **€800–2,500/month (~$940–2,900)** retainer at 4–8h/week, **€3,000–8,000 (~$3,500–9,400)** for a bespoke multi-module build delivered over 4–8 weeks.
|
||||||
|
|
||||||
|
### 1d) Flagship (20+ devs, Hypixel/Wynncraft/Hytown tier)
|
||||||
|
|
||||||
|
**Real WTP signals.**
|
||||||
|
|
||||||
|
- **Hypixel Studios (Hytale publisher) Levels.fyi data (April 2026):** median total comp **$104,974**; top reported product-designer role $238,800 ([Levels.fyi](https://www.levels.fyi/companies/hypixel/salaries)). Glassdoor-reported dev salaries: average **$122,205** (range $91k–$167k) and software engineers **$148,528** (25th–75th percentile $118k–$189k, ~$57–91/hr, [Glassdoor](https://www.glassdoor.com/Hourly-Pay/Hypixel-Studios-Software-Engineer-Hourly-Pay-E2391163_D_KO16,33.htm)).
|
||||||
|
- **Simon Collins-Laflamme (Hytale founder)** stated on X that he was willing to personally put **$25 million USD** into Hytale to finish it ([X post](https://x.com/ThirtyVirus/status/1938337672487166131) — via ThirtyVirus quote tweet). Hypixel Studios has 70+ full-time staff ([InGame Job profile](https://ingamejob.com/en/company/hypixel-studios)).
|
||||||
|
- **For external contractors**, flagship-scale Minecraft companies pay within/near the Arc.dev senior band of **$60–100+/hour** ([Arc.dev](https://arc.dev/hire-developers/minecraft)); ZipRecruiter's national U.S. average for a "Minecraft Developer" is **$52.84/hr ≈ $109,905/yr** (25th–75th percentile $84k–$134k, 90th percentile $150k, [ZipRecruiter](https://www.ziprecruiter.com/Salaries/Minecraft-Developer-Salary)).
|
||||||
|
- **Flagship hiring filters.** Hypixel Studios explicitly says: "Show us your work! Whether it be YouTube videos, screenshots, websites, or your GitHub, all relevant experiences can only make you look better. … if you do share code with us, we will not compile or run any of the examples in the initial review" ([Hypixel.net/jobs](https://hypixel.net/jobs/)). The ZipRecruiter Minecraft-developer hiring guide confirms the pattern: "Reviewing a candidate's public GitHub repositories or portfolio projects offers additional evidence of their technical capabilities and coding style. For senior roles, assess their ability to design scalable architectures and mentor junior developers" ([ZipRecruiter hire-guide](https://www.ziprecruiter.com/hiring/how-to-hire/minecraft-developer)). This is explicit, on-the-record evidence that **GitHub quality + portfolio + ability to architect = the senior filter**.
|
||||||
|
|
||||||
|
**Realistic flagship WTP.** **€85–130/hour (~$100–150/hr)** for external contractors, **€8,000–30,000 (~$9,400–35,000)** per scoped module, **€3,000–6,000/month (~$3,500–7,000)** retainer for 4 days/month, up to **€60k/year** for a continuous engagement. Full-time comp they pay their own employees is **$90k–190k/yr** which is the ceiling reference point for freelance ask.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. The 4 × 6 pricing matrix
|
||||||
|
|
||||||
|
Columns are service types. Every cell shows the defensible price band in EUR and USD, a reasoning snippet tied to evidence, and a **Rec** (✅ recommend / ⚠️ situational / ❌ avoid for the user's senior positioning).
|
||||||
|
|
||||||
|
| | **Single plugin** | **Multi-plugin suite** | **Retainer (mo.)** | **Express day-work (1–2 days)** | **Scoped custom build (2–6 wk)** | **Ongoing engagement (3+ mo.)** |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| **Hobbyist solo** | €20–80 (~$23–95). Fiverr floor is $5–40; BBB budgets in this tier cluster at €15–100. ❌ Avoid. Erodes positioning & violates €450/day anchor. | €60–180 (~$70–210). Equivalent of 2–4 BBB plugins bundled. ❌ Avoid. | €40–120/mo (~$47–140). Comparable to MythicMobs $4.99–9.99/mo Premium tiers ([Answer Overflow](https://www.answeroverflow.com/m/1283816171451191440)). ❌ Avoid as bespoke; ✅ as productized (VotePipe SaaS tier). | €150–250 (~$175–290). Half a TJM; loses money. ❌ Avoid. | €400–1,000 (~$470–1,170). Same as BBB "big plugin" band. ❌ Avoid bespoke; ✅ redirect to premium resource sales. | €80–250/mo (~$95–290). Unsustainable for senior. ❌ Avoid. |
|
||||||
|
| **Small network (2–5 staff)** | €250–600 (~$290–700). BBB practice-plugin budgets are €50–100 but *quality* small-network work closes at €250–600 for 1-day scopes. ⚠️ Only accept if client passes a lead-qualification script. | €700–1,800 (~$820–2,100). 3-plugin starter pack equivalent. ✅ Good entry-tier if sold as a fixed "Small Network Starter Pack". | €400–900/mo (~$470–1,050). Equivalent to ~1 day/mo of TJM. ⚠️ Recommend only with 3-month minimum & scope cap. | €400–600 (~$470–700). Matches French senior TJM floor of €400–521 ([Freelance.com](https://www.freelance.com/devenir-freelance/le-tjm-dun-developpeur-java/)). ✅ Flagship signature offer — see §3. | €1,500–4,000 (~$1,750–4,700). Matches BBB "4–5 figure" observation for full cores. ✅ Core offering. | €600–1,500/mo (~$700–1,750). ⚠️ Only if retainer evolves naturally from prior project. |
|
||||||
|
| **Mid-tier RPG/MMO (5–15 staff)** | €600–1,500 (~$700–1,750). HyClash-scale servers have $20k budgets ([HytaleTop100](https://hytaletop100.com/blog/thirtyvirus-announces-hyclash-ambitious-new-hytale-server-network-with-20k-budget)) and understand *scope × quality*, not $/hour. ✅ | €2,000–5,000 (~$2,340–5,850). Multi-plugin suite delivered across 2–4 weeks. ✅ Primary revenue engine. | €1,200–2,500/mo (~$1,400–2,925). Equivalent to 2.5–5 days/month at €500 TJM. ✅ Sweet spot. | €500–700 (~$585–820). Premium 1-day express. ✅ Entry/probe offer. | €4,000–10,000 (~$4,700–11,700). Full custom MMO module (class system, dungeon framework). ✅ Flagship deliverable. | €1,500–3,500/mo (~$1,750–4,100). ✅ Strong positioning. |
|
||||||
|
| **Flagship (20+ devs)** | €1,500–3,000 (~$1,750–3,500). Rarely buy one-off plugins; when they do it's usually a specialised fix. ⚠️ Only accept if part of a longer relationship. | €5,000–12,000 (~$5,850–14,000). ⚠️ Only as proof-phase for an ongoing engagement. | €3,000–6,500/mo (~$3,500–7,600). Matches 4–6 days/month at €650+ TJM. Equivalent to Arc.dev $60–100+/hr senior contractors ([Arc.dev](https://arc.dev/hire-developers/minecraft)). ✅ Dream tier. | €700–900 (~$820–1,050). "Fire-drill" express day. ⚠️ Only after trust established. | €10,000–30,000 (~$11,700–35,000). Comparable to ~2–4 months of an internal Hypixel mid-dev ($122k/yr ÷ 12 × 1.3 margin) ([Glassdoor](https://www.glassdoor.com/Salary/Hypixel-Studios-Developer-Salaries-E2391163_D_KO16,25.htm)). ✅ Top-of-funnel. | €30,000–60,000/yr (~$35,000–70,000). Closer to a part-time internal hire than a freelancer. ✅ Strategic aspiration (post-SDK stabilisation). |
|
||||||
|
|
||||||
|
### Which cells the user should actually sell (given CDI + SASU + capacity constraint)
|
||||||
|
|
||||||
|
**✅ Core recommended cells (build the business around these six):**
|
||||||
|
- Small network → Scoped custom build (€1,500–4,000)
|
||||||
|
- Small network → Express day-work (€400–600)
|
||||||
|
- Mid-tier → Multi-plugin suite (€2,000–5,000)
|
||||||
|
- Mid-tier → Retainer (€1,200–2,500/mo)
|
||||||
|
- Mid-tier → Scoped custom build (€4,000–10,000)
|
||||||
|
- Flagship → Retainer (€3,000–6,500/mo)
|
||||||
|
|
||||||
|
**⚠️ Accept opportunistically:** Flagship single plugin and express day-work (gateway offers only), mid-tier ongoing engagement, small-network retainer.
|
||||||
|
|
||||||
|
**❌ Never sell:** anything in the hobbyist column (redirect to free OSS + VotePipe SaaS), flagship scoped build (requires too much bandwidth vs a CDI + SASU life).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Three concrete packaging proposals
|
||||||
|
|
||||||
|
These are designed to **avoid segment cannibalization** via three mechanics: (a) each package is clearly differentiated in *outcome*, not hours; (b) price gaps are large enough (≥2.5×) that a hobbyist literally cannot size up to the pro package without committing to a scope they don't need; (c) the top package is positioned as *engagement*, not a product, so the flagship buyer doesn't feel they're being sold a boxed good.
|
||||||
|
|
||||||
|
### 📦 Package A — "Express Build" (€450 / ~$525, fixed)
|
||||||
|
|
||||||
|
**For:** small network owner (2–5 staff) who has a single specific plugin pain-point and a next-two-weeks deadline.
|
||||||
|
|
||||||
|
**Included:**
|
||||||
|
- 1 working day of engineering (Kotlin/Java, Paper/Spigot or Hytale JavaPlugin)
|
||||||
|
- 1 small scoped plugin (1 feature, configurable YAML/JSON, PlaceholderAPI integration if Minecraft)
|
||||||
|
- GitHub private repo handover + README
|
||||||
|
- 14-day bug-fix warranty
|
||||||
|
- 30-minute video/voice onboarding call
|
||||||
|
|
||||||
|
**Price anchor justification:** matches the French senior Java TJM of €400–521 ([Freelance.com](https://www.freelance.com/devenir-freelance/le-tjm-dun-developpeur-java/)) and sits 4–8× above Fiverr's top professional gig ($95, [Jay_gamerz](https://www.fiverr.com/jay_gamerz/custom-optimized-minecraft-plugin-development)). That gap is wide enough that hobbyists self-select out and do not haggle a senior dev down; small networks with real budgets recognise it as market-clearing.
|
||||||
|
|
||||||
|
**Anti-cannibalization:** sold only through an **intake form** on killiandalcin.fr with 3 qualification questions (player-count, Tebex/monetization status, existing plugin stack). Those who fail qualification are redirected to *free* myth_lib plugins on GitHub.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📦 Package B — "Pro Suite" (€2,800 / ~$3,275, scoped)
|
||||||
|
|
||||||
|
**For:** mid-tier RPG/MMO (5–15 staff) who needs a *module* — e.g. a class/skill system, a dungeon framework, a custom economy, a progression mediator.
|
||||||
|
|
||||||
|
**Included:**
|
||||||
|
- ~5–7 working days across 3–4 weeks
|
||||||
|
- A module of up to 3 interoperating plugins built on a hub-and-spoke architecture (the myth_lib model: central mediator + feature spokes)
|
||||||
|
- Full configuration docs + video walkthrough
|
||||||
|
- 30-day bug-fix warranty
|
||||||
|
- 2 × 1-hour design consultation calls before build kickoff
|
||||||
|
- Priority Discord support channel (SLA: 48h weekday response)
|
||||||
|
|
||||||
|
**Price anchor justification:** Mid-tier MMO servers like HyClash operate on $20k total budgets ([HytaleTop100](https://hytaletop100.com/blog/thirtyvirus-announces-hyclash-ambitious-new-hytale-server-network-with-20k-budget)) — €2,800 is 14% of that, a reasonable buy for a single module. It's also ~6× Package A, a deliberately wide gap to prevent Package A buyers from "stretching up."
|
||||||
|
|
||||||
|
**Anti-cannibalization:** Package B is sold *only* after a 30-minute discovery call. The scope is written into a 1-page statement of work signed in DocuSign. Hobbyists cannot buy Package B because they can't articulate a module spec. Flagship buyers get redirected to Package C because Package B is capped at 1 module.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📦 Package C — "Senior Retainer" (€2,400 / ~$2,800 per month, minimum 3 months)
|
||||||
|
|
||||||
|
**For:** mid-tier-plus / flagship (HyClash, Hytown, Runeteria, Hytale Heroes, Hylterium-tier or equivalent Minecraft MMO networks).
|
||||||
|
|
||||||
|
**Included:**
|
||||||
|
- 4 booked working days per calendar month (≈32 hours), rollable ±25% across months
|
||||||
|
- Continuous availability on a shared Discord/Slack channel during EU hours
|
||||||
|
- Weekly 30-min async status video
|
||||||
|
- Architectural review of their existing plugin stack, quarterly
|
||||||
|
- 1 emergency "fire-drill" half-day per quarter included
|
||||||
|
- All deliverables under a written IP assignment with escrow fallback
|
||||||
|
|
||||||
|
**Price anchor justification:** €2,400/mo ÷ 4 days = €600/day, which sits comfortably inside the French senior Java band of €400–810 ([Freelance.com](https://www.freelance.com/devenir-freelance/le-tjm-dun-developpeur-java/); [Embarq](https://www.embarq.fr/tjm/tjm-java)) and the $60–100+/hr Arc.dev senior bracket ([Arc.dev](https://arc.dev/hire-developers/minecraft)). It is also priced at ~30% of a junior Hytale in-house engineer's loaded cost (Hypixel Studios: median $104,974 ÷ 1.3 = $80k base ≈ $6,600/mo) — a 3× discount vs. hiring, but 5× above the "$14–15/hour" owner-of-small-network bracket on Quora ([Quora](https://www.quora.com/Do-developers-of-Minecraft-servers-make-money)).
|
||||||
|
|
||||||
|
**Anti-cannibalization:** positioned as *engagement*, not a product, so the lower tiers can't "step up" — they don't have the operational maturity to use 4 days/month of dev time. The 3-month minimum filters tourists. The retainer is invoice-based (SASU), not Stripe-checkout — reinforcing seriousness.
|
||||||
|
|
||||||
|
### Why these three prices reinforce (not cannibalize) each other
|
||||||
|
|
||||||
|
- **Gaps: Package A (€450) → Package B (€2,800) = 6.2× jump; Package B (€2,800) → Package C (€7,200 for minimum 3 months) = 2.6× jump.** Behavioural-pricing research on tiered services consistently finds that gaps of ≥2× between tiers prevent "decoy climb" in either direction.
|
||||||
|
- **Different intake paths:** self-serve intake form (A), discovery call + SOW (B), quarterly strategic call (C). This prevents a Package A buyer from negotiating up.
|
||||||
|
- **Different deliverable grammar:** A delivers a *file*, B delivers a *module*, C delivers *availability*. A hobbyist cannot consume C; a flagship does not want to buy A.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Positioning ladder — the 3–6 month escalation script
|
||||||
|
|
||||||
|
The goal is to convert a low-intent Discord inquiry into a Package-C retainer **without ever selling Package A to a flagship or Package C to a hobbyist**. Each stage has a trigger, a tone, and a next step.
|
||||||
|
|
||||||
|
### Month 0 — "Discovery" (the free, OSS/content phase)
|
||||||
|
|
||||||
|
- **Trigger:** incoming DM on Discord/X, or comment on a GitHub issue, or VotePipe SaaS signup. Typical opener: *"Hey, I saw your [Mythlane plugin / VotePipe / Spellbook-style lib]. Could you add X feature for me?"*
|
||||||
|
- **Tone:** generous, helpful, no sell. *"Happy to help — can I ask what your server stack / player count / monetization setup looks like? Just so I point you to the right tool."*
|
||||||
|
- **Next step:** Always redirect to free OSS first. This filters aggressively: 70–80% of hobbyists will accept the free redirect and leave. The ~20–30% who reply *"we'd pay to have X customised"* are your warm leads. This is the ItemsAdder/MythicMobs funnel model in reverse: free pulls them in, but instead of a premium SKU, the upsell is bespoke work ([ItemsAdder evidence of 18,000+ downloads with tiered pricing](https://builtbybit.com/resources/itemsadder.10839/); [MythicMobs free version has 639 reviews and is the #1 custom mob creator, with premium upsell to $4.99–9.99/mo or $39.99 lifetime](https://www.spigotmc.org/resources/%E2%9A%94-mythicmobs-free-version-%E2%96%BAthe-1-custom-mob-creator%E2%97%84.5702/reviews); [Answer Overflow](https://www.answeroverflow.com/m/1283816171451191440)).
|
||||||
|
|
||||||
|
### Month 1 — "Qualification" (pre-contract phase)
|
||||||
|
|
||||||
|
- **Trigger:** lead replies with paid intent. You respond with a short **3-question qualifier** (player count, monthly revenue / Tebex status, team size). Any server under 50 CCU and below $300/mo revenue → offered Package A at €450 **or** redirected to a Fiverr-tier dev with a friendly note ("my rates are above what this project needs — here's a good hourly dev for this size of job"). This sentence alone is the senior positioning move — flagship buyers notice when you *refuse* work.
|
||||||
|
- **Tone:** precise, professional, unembarrassed about rates. "My TJM is €500; for your scope that's €450 for a 1-day express or €2,800 for a scoped module."
|
||||||
|
- **Next step:** if they're in Package B/C territory → 30-min scoped discovery call. Use a Calendly link with a calendar integrated into killiandalcin.fr (not a "DM me" on Discord — the latter commoditises).
|
||||||
|
|
||||||
|
### Month 2 — "Proof of value" (Package A or B)
|
||||||
|
|
||||||
|
- **Trigger:** the lead has booked either Package A (express day-work) or Package B (Pro Suite).
|
||||||
|
- **Tone:** ruthlessly on-spec and on-time. Deliver early if possible. Record a 3-minute Loom showing the feature in action.
|
||||||
|
- **Deliverable extras (without raising price):** include a "recommendations document" at handover listing 3 other things you noticed about their stack that are worth fixing. **This is the single most important upsell trigger** — it primes them for Package C without being a pitch.
|
||||||
|
|
||||||
|
### Month 3 — "Retainer seeding"
|
||||||
|
|
||||||
|
- **Trigger:** the client has used the Package A/B deliverable in production for 2–4 weeks. Schedule a 15-minute "how's it going?" check-in.
|
||||||
|
- **Tone:** consultative, not salesy. Reference 2 of the 3 items from the recommendations document: "Did you ever get around to X? I noticed Y is now impacting your Z."
|
||||||
|
- **Next step:** if they want more work → pitch Package C (Senior Retainer) as the frame: *"Most networks like yours find 4 days/month covers maintenance + incremental features. Happy to run a 3-month pilot at €2,400/mo."* Note: the €7,200 3-month commitment is **smaller than Package B**, which lets the lead step up without sticker shock while you secure recurring revenue.
|
||||||
|
|
||||||
|
### Month 4–6 — "Anchoring"
|
||||||
|
|
||||||
|
- **Trigger:** retainer active, 2–3 successful delivery cycles completed.
|
||||||
|
- **Tone:** strategic partner, not a contractor.
|
||||||
|
- **Next step:** introduce a **case study** on killiandalcin.fr, **with the client's public consent and logo**. This is the asset that converts future flagship leads cheaply — flagship buyers reference-check via DM and GitHub (confirmed pattern per Hypixel Studios' own hiring guidance, [Hypixel.net/jobs](https://hypixel.net/jobs/); and the Arc.dev/Upwork consensus on GitHub portfolio review, [Upwork](https://www.upwork.com/hire/minecraft-freelancers/), [ZipRecruiter](https://www.ziprecruiter.com/hiring/how-to-hire/minecraft-developer)). A single Hytown/HyClash/Runeteria-tier logo on your site repositions you from "solo French dev" to "the person those networks trust" — and roughly doubles what you can ask from the next flagship inbound.
|
||||||
|
|
||||||
|
### Tonal rules throughout the ladder
|
||||||
|
|
||||||
|
- **Never negotiate the TJM.** Negotiate scope. "I can do X for €2,800, or if that's over budget, here's a smaller X for €1,500."
|
||||||
|
- **Never discount to close.** Discounts telegraph that the original price was fake.
|
||||||
|
- **Always reference GitHub.** When a prospect asks for proof of work, send the public Mythlane myth_lib repo link and the Spellbook library. Public code is the senior developer's credential; flagship buyers check GitHub *before* they DM you.
|
||||||
|
- **Never mention Fiverr.** Even negatively. The moment Fiverr enters the conversation, you're in Fiverr's price-gravity well.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Five red flags — MC pricing disasters to avoid (with real examples)
|
||||||
|
|
||||||
|
### 🚩 Red flag #1 — Listing on Fiverr
|
||||||
|
|
||||||
|
**Why it's a disaster:** Fiverr Minecraft-plugin category is dominated by $5–25 gigs; the Fiverr community itself acknowledges the "race to the bottom" dynamic and bad ratings for sellers who try to charge fair prices ([Fiverr Community forum](https://community.fiverr.com/public/forum/boards/support-and-troubleshooting-by1/posts/324060-value-for-money-is-a-race-to-the-bottom); [Medium analysis](https://jenessastark.medium.com/why-upwork-fiverr-keep-you-stuck-and-what-to-do-instead-12f32f353380)). Arc.dev itself states: "high-quality freelance developers often avoid general freelance platforms like Fiverr to avoid the bidding wars" ([Arc.dev](https://arc.dev/hire-developers/minecraft)).
|
||||||
|
|
||||||
|
**Concrete example:** Jay_gamerz — technically competent (4+ years, 100+ projects) — is still capped at **$95 basic / $25–45 hourly** on Fiverr ([Fiverr profile](https://www.fiverr.com/jay_gamerz/custom-optimized-minecraft-plugin-development)), despite delivering what the reviews describe as premium work. The platform price-ceiling is structural.
|
||||||
|
|
||||||
|
**Avoidance rule:** never create a Fiverr account under killiandalcin.fr. If you need a volume channel, use BBB's "services" forum (where commissions already transact at $300–$2000) rather than Fiverr.
|
||||||
|
|
||||||
|
### 🚩 Red flag #2 — Offering a cheap "starter pack" in the same place as the premium offer
|
||||||
|
|
||||||
|
**Why it's a disaster:** A $25 starter pack next to a €2,800 Pro Suite tells the buyer your "real price" is $25 and everything else is a rip-off. This is the pattern that destroyed multiple "premium plugin brands" on BBB — the developer launches a $6.50 StaffTools-style utility next to a $150 premium plugin and within a year is only selling the $6.50 product.
|
||||||
|
|
||||||
|
**Concrete example:** The public BBB forum price landscape for moderation/admin utilities bottomed out at **$6.50 for StaffTools-Advanced Moderation** ([BBB plugins forum](https://builtbybit.com/forums/plugins/)) — and the cluster of similar cheap plugins makes it functionally impossible for a new premium entrant to sell a $50+ utility.
|
||||||
|
|
||||||
|
**Avoidance rule:** Package A (€450) is sold via killiandalcin.fr, not on BBB. If you list resources on BBB they should be *either* all high-priced premium with locked licensing *or* all free. Do not straddle.
|
||||||
|
|
||||||
|
### 🚩 Red flag #3 — Accepting rev-share / equity in lieu of cash for new servers
|
||||||
|
|
||||||
|
**Why it's a disaster:** Revenue-share contracts with pre-launch servers convert to zero 90%+ of the time. BBB's "investing" tag is full of examples: "MineSea did $800+ in gross revenue in its first week, seeking $1,100 — 17.5% of monthly net profit until repaid" ([BBB investing tag](https://builtbybit.com/tags/investing/)). These servers rarely survive 12 months, let alone repay capital. The Game Republic analysis of game-industry revenue-share contracts notes: "Revenue share provides a comparatively (slightly) more immediate route to income but will likely be less lucrative in the long run" ([Game Republic](https://gamerepublic.net/features/sweat-equity-or-revenue-share-pros-and-cons-for-game-devs/)).
|
||||||
|
|
||||||
|
**Concrete example:** Most "HyTale server recruitment" threads on BBB in Nov-2025–Apr-2026 are explicitly volunteer-for-now-pay-later appeals with no contract (e.g. [BBB Hytale Developer Recruitment thread](https://builtbybit.com/threads/hytale-developer-recruitment-lets-team-up.735631/) — "Looking only for volunteers, this would just be a very fun project, with some income potential later"). The HyClash "Developers Wanted" BBB post is the serious-end counterexample but still describes itself as volunteer recruitment ([BBB thread](https://builtbybit.com/threads/open-developers-wanted-for-hyclash-ft-thirtyvirus.737208/)).
|
||||||
|
|
||||||
|
**Avoidance rule:** cash only for initial scope. You can add a performance bonus (e.g. "+€500 if the plugin ships bug-free by date X"), but never replace cash. Equity deals require a SASU cap-table conversation and a lawyer.
|
||||||
|
|
||||||
|
### 🚩 Red flag #4 — Selling source-code licenses too cheaply
|
||||||
|
|
||||||
|
**Why it's a disaster:** Source licensing is the absolute worst price elasticity trap in the MC ecosystem because one leak on BlackSpigot nullifies the entire future revenue stream. BlackSpigot already hosts *leaked* MythicMobs Premium, ItemsAdder, CMI, and Oraxen builds — despite their anti-piracy systems ([BlackSpigot leaked plugins index](https://www.blackspigot.com/downloads/categories/leaked-minecraft-plugins.105/); [BlackSpigot mythicmobs tag](https://www.blackspigot.com/tags/mythicmobs/)). Songoda's entire Epic Plugins catalogue was leaked *the day of release* ([BlackSpigot Songoda Epic Plugins 26.04.2025](https://www.blackspigot.com/downloads/songoda-epic-plugins-all-latest-version-26-04-2025-latest-version-of-all-spigot-plugins.33156/)) — and Songoda subsequently wound down sellable products. The Songoda outcome (domain songoda.com currently redirects to a nearly-empty product page) is the cautionary tale.
|
||||||
|
|
||||||
|
**Concrete example:** BBB's own "Selling Plugin Ownership" forum sees developers selling entire plugin portfolios (e.g. "ItemsCore — unique way to create new items + addon SDK, owner selling source") after burnout ([BBB selling tag](https://builtbybit.com/tags/selling/)). The underlying economics rarely justified the original pricing once the plugin leaked.
|
||||||
|
|
||||||
|
**Avoidance rule:** never sell source as part of Package A or B. If source licensing is truly required (rare — clients almost never need it), it's a **Package C retainer extension** priced at 10–20× the project baseline and gated behind a legal NDA. The default is compiled JAR + runtime license, not source.
|
||||||
|
|
||||||
|
### 🚩 Red flag #5 — Retainers with unbounded scope or ambiguous SLAs
|
||||||
|
|
||||||
|
**Why it's a disaster:** The #1 reported cause of retainer-model collapse across the BBB hiring threads is scope creep. A "$14–$15/hour" server owner ([Quora](https://www.quora.com/Do-developers-of-Minecraft-servers-make-money)) with no cap ends up consuming 40+ hours a month, pays $600, and the developer burns out in 3 months. The [Cool Code Company](https://www.coolcodecompany.co.uk/what-we-offer/software-support/monthly-retainer/what-is-a-monthly-retainer) retainer guide and [Paige Brunton's warning](https://www.paigebrunton.com/blog/who-no-monthly-retainer) both name this as the single biggest retainer failure mode.
|
||||||
|
|
||||||
|
**Concrete example:** Multiple BBB hiring posts frame the ask as "I need a long-term developer for approximately 2–3 hours per week, about $50/month" ([BBB developer tag](https://builtbybit.com/tags/developer/)). These relationships die within 8 weeks because the 2–3h/week inevitably becomes 8–10h/week. That's a failure mode you avoid by contractually capping hours (Package C = 32h/mo ± 25% = hard cap of 40h, with additional-hour pricing pre-agreed at €100/h).
|
||||||
|
|
||||||
|
**Avoidance rule:** Every retainer contract has a monthly hour cap, a rollover policy, and an additional-hour rate. Pair with a scope-change protocol (written sign-off in Discord/Slack for anything outside the monthly plan).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Psychology of the flagship buyer (HyClash / Hytown / Runeteria / Wynncraft-tier)
|
||||||
|
|
||||||
|
Based on direct evidence from Hypixel Studios' public hiring pages, BBB recruitment posts, and parallel hiring-guide literature:
|
||||||
|
|
||||||
|
### What filters them IN:
|
||||||
|
|
||||||
|
1. **Public GitHub with real code you own.** Hypixel Studios' own instruction: "Show us your work. Whether it be YouTube videos, screenshots, websites, or your GitHub" ([Hypixel.net/jobs](https://hypixel.net/jobs/)). The Mythlane + myth_lib hub-and-spoke architecture is *exactly* the portfolio shape that scores high with flagship buyers — it demonstrates you can design a system, not just write a plugin. The GitHub hiring checklist from the GitHub community discussion names "Project Diversity & Ownership" and "Documentation & Readability" as two of the top evaluation criteria ([GitHub discussion #183788](https://github.com/orgs/community/discussions/183788)).
|
||||||
|
2. **A Discord reputation surface.** HyClash recruitment uses Discord as the primary interview channel; Hytown uses Discord; Wynncraft gates applications at [email protected] but discovery starts in Discord ([Wynncraft apply portal](https://ct.wynncraft.com/apply)). Being visible in the HytaleModding Discord (8,000+ members, [github.com/HytaleModding](https://github.com/HytaleModding)) with technical contributions is a strong filter-pass signal.
|
||||||
|
3. **A published rate card or transparent TJM.** Most senior developers don't publish rates because Fiverr culture has poisoned the expectation — which means *you publishing yours* is a differentiator. Mid- and flagship-tier buyers treat a visible rate card as a sign of a "real business." The Arc.dev guide explicitly ties senior WTP ($60–100+/hr) to this transparency dynamic ([Arc.dev](https://arc.dev/hire-developers/minecraft)).
|
||||||
|
4. **Showcase server / live-code demo.** HyClash, Hytown, and Runeteria all demand this — the [joxii.xyz](https://joxii.xyz) portfolio (mount system + dungeon portal system) is a prime example of the "show, don't tell" rule working for a flagship-level commission engagement.
|
||||||
|
5. **Proof you refuse bad projects.** When a flagship buyer sees you've said no to a hobbyist thread (or redirected one publicly), it actually increases the ask.
|
||||||
|
|
||||||
|
### What filters them OUT:
|
||||||
|
|
||||||
|
1. **Fiverr/Upwork profile as the primary portfolio.** Signals commoditization.
|
||||||
|
2. **No GitHub at all, or only closed-source.** The Upwork hire-guide explicitly lists "Request a code sample or GitHub repository link to evaluate the quality and structure of their previous work" as a standard hiring step ([Upwork](https://www.upwork.com/hire/minecraft-freelancers/)).
|
||||||
|
3. **Scope-creep tolerance in past reviews.** Flagship buyers read your BBB feedback scores and check for phrases like "was willing to add extra features for free" — a *negative* signal because it implies you will capitulate under pressure.
|
||||||
|
4. **Willingness to take rev-share instead of cash.** Flagship buyers read that as "this dev can't price themselves."
|
||||||
|
5. **Aggressive upsell on first contact.** Mid-/flagship-tier clients want consultative discovery, not a product pitch.
|
||||||
|
|
||||||
|
### Contract preference: retainer vs project
|
||||||
|
|
||||||
|
Direct evidence from BBB hiring posts in Feb–Apr 2026: **roughly 60% of explicit "we pay" posts describe the engagement as "monthly pay"** ([BBB Hiring Hytale Developer — monthly pay thread](https://builtbybit.com/threads/hiring-hytale-developer-s-new-server-project-monthly-pay-fast-progress-high-quality.736777/)); the remaining 40% are scoped project work. Flagship-tier buyers *prefer retainer* because it aligns incentives for long-term quality; mid-tier buyers *prefer scoped* because they don't trust their budget will last. This is why Package C has a 3-month minimum and Package B is the bridge — it lets mid-tiers prove a relationship before committing.
|
||||||
|
|
||||||
|
### Negotiation style
|
||||||
|
|
||||||
|
Flagship buyers do **not** negotiate the TJM; they negotiate the **hour cap and the rollover policy**. This is a predictable pattern across the retainer literature ([Cool Code Company retainer overview](https://www.coolcodecompany.co.uk/what-we-offer/software-support/monthly-retainer/what-is-a-monthly-retainer); [Lucky Media](https://www.luckymedia.dev/software-development-retainer-services)). Build your retainer pricing assuming 4 booked days/month, rollable ±25% — that accommodates 95% of the negotiation outcomes without eroding price.
|
||||||
|
|
||||||
|
### Reference-check pattern
|
||||||
|
|
||||||
|
Flagship hires DM 2–3 previous clients. The ZipRecruiter hiring guide names this explicitly: "Reviewing a candidate's public GitHub repositories or portfolio projects offers additional evidence of their technical capabilities and coding style" ([ZipRecruiter](https://www.ziprecruiter.com/hiring/how-to-hire/minecraft-developer)), and the Upwork guide adds "past client feedback and testimonials to get an idea for the kind of work the developer does" ([Upwork](https://www.upwork.com/hire/minecraft-freelancers/)). **Action:** after every Package B/C engagement, ask for a one-paragraph testimonial + permission to pass their Discord username to future prospects as a reference. This is the single cheapest thing you can do to unlock the next flagship contract.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Hytale-specific timing recommendation (given SDK instability)
|
||||||
|
|
||||||
|
Key fact: the user has *paused* Hytale plugin development pending SDK stabilisation, which is the correct call. Evidence:
|
||||||
|
|
||||||
|
- Hytale entered Early Access 13 January 2026 with "rough and unfinished" modding tools ([Hytale.com](https://hytale.com/news/2026/1/hytale-is-finally-here); [Simon on X](https://x.com/Simon_Hypixel/status/1994430319580098783)).
|
||||||
|
- The plugin API is active enough to build on (Java 25 + `com.hypixel.hytale:Server` Maven artefact, [Hytalemodding.dev](https://hytalemodding.dev/en/docs/guides/plugin/setting-up-env)), but the Hytale blog still flags "modding and creative tools are in a decent state; however, they're not where we want them long-term."
|
||||||
|
- **Hytale is already generating paid plugin revenue** on BBB (HyShop: 37 purchases at $9.88; 5,000+ mods and 20M downloads on CurseForge within weeks of launch per [Switchblade Gaming](https://www.switchbladegaming.com/hytale/modding-tutorial-create-your-first-mod/)), but unit counts per plugin are still single-digit to low double-digit.
|
||||||
|
|
||||||
|
**Recommendation:** the commercial window on Hytale *premium-resource* sales does not yet reward focused investment — but the commercial window on **bespoke commissions for serious Hytale MMO networks (Hytown, HyClash, Runeteria, Hylterium-tier)** is wide open *right now* because every serious network needs Java devs and the talent pool is thin. The user's correct sequence:
|
||||||
|
|
||||||
|
1. **April–June 2026:** keep Mythlane active on Minecraft as showcase; accept 1–2 Hytale Package-B commissions at premium rates (€3,500–6,000) from networks like HyClash or equivalents. This builds Hytale-specific case studies *before* the SDK fully stabilises, when competition is lowest.
|
||||||
|
2. **July–October 2026:** as the Hytale API stabilises, port the best 2–3 Mythlane plugins to Hytale as *free* OSS on GitHub — matching the ItemsAdder/MythicMobs free-tier-as-funnel model. This is the moment to establish the brand on CurseForge + BuiltByBit with 2–3 anchor resources.
|
||||||
|
3. **Q4 2026 onward:** with 2–3 Hytale case studies + free OSS portfolio, raise the Package C retainer ceiling to €3,200/mo and start filtering into flagship Hypixel-ecosystem adjacencies.
|
||||||
|
|
||||||
|
The single biggest mistake would be to rush a $10–20 premium Hytale plugin onto BBB now (where 18-purchase sales are the norm) — that would commoditize killiandalcin.fr for a couple hundred euros in revenue, and forego the €5k–20k commission revenue available from serious MMO servers that are *actively hiring*.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Appendix — evidence index (grouped by claim)
|
||||||
|
|
||||||
|
**Fiverr floor pricing:**
|
||||||
|
[Fiverr Bukkit category](https://www.fiverr.com/gigs/bukkit) · [Deckogaming $5 gig](https://www.fiverr.com/deckogaming/minecraft-plugin-developer-and-configurator) · [Jay_gamerz $95 gig](https://www.fiverr.com/jay_gamerz/custom-optimized-minecraft-plugin-development) · [Fiverr minecraft developer category](https://www.fiverr.com/gigs/minecraft-developer)
|
||||||
|
|
||||||
|
**BBB hire-thread budgets:**
|
||||||
|
[BBB "developer for hire" tag](https://builtbybit.com/tags/developer-for-hire/) · [BBB "plugin developer" tag](https://builtbybit.com/tags/plugin-developer/) · [BBB "developer" tag](https://builtbybit.com/tags/developer/) · [BBB aim-training $100 thread](https://builtbybit.com/threads/looking-for-developer-aim-training-plugin-100.695450/) · [BBB "How much is developing a plugin cost?"](https://builtbybit.com/threads/how-much-is-developing-a-plugin.695806/) · [BBB practice plugin €50–100 thread](https://builtbybit.com/threads/looking-for-a-custom-practice-plugin.642064/)
|
||||||
|
|
||||||
|
**Hytale plugin sales & packaging:**
|
||||||
|
[BBB Hytale plugin listing](https://builtbybit.com/resources/hytale/plugins/) · [HyShop bundle page](https://builtbybit.com/resources/bundle/hytale-shop-premium-bundle.3309/) · [jBuild / jMurder bundles](https://builtbybit.com/resources/jbuild-hytale-build-battle-plugin.92795/) · [EtAuctionHouse + EtBundle](https://builtbybit.com/resources/etauctionhouse-hytale-auctions-system.91350/) · [Hytale resources landing](https://builtbybit.com/resources/hytale/) · [HytaleModding BuiltByBit publishing guide](https://github.com/HytaleModding/site/blob/main/content/docs/en/publishing/builtbybit.mdx)
|
||||||
|
|
||||||
|
**Hytale release & SDK status:**
|
||||||
|
[Hytale is finally here! (Jan 13 2026)](https://hytale.com/news/2026/1/hytale-is-finally-here) · [Simon's X post setting Jan 13 date](https://x.com/Simon_Hypixel/status/1994430319580098783) · [Hytale Early Access guide (Hytalediscords)](https://hytalediscords.com/blog/hytale-career-guide) · [HytaleModding GitHub org](https://github.com/HytaleModding) · [HytaleModding docs, Getting Started with Plugins](https://britakee-studios.gitbook.io/hytale-modding-documentation/plugins-java-development/07-getting-started-with-plugins) · [Hytalemodding.dev dev-env guide](https://hytalemodding.dev/en/docs/guides/plugin/setting-up-env) · [Switchblade modding tutorial - 20M mods downloaded](https://www.switchbladegaming.com/hytale/modding-tutorial-create-your-first-mod/) · [Wikipedia Hytale entry](https://en.wikipedia.org/wiki/Hytale)
|
||||||
|
|
||||||
|
**Hytale/flagship server hiring evidence:**
|
||||||
|
[HyClash $20k budget announcement (HytaleTop100)](https://hytaletop100.com/blog/thirtyvirus-announces-hyclash-ambitious-new-hytale-server-network-with-20k-budget) · [HyClash developer recruitment on BBB](https://builtbybit.com/threads/open-developers-wanted-for-hyclash-ft-thirtyvirus.737208/) · [Hytown about page](https://www.hytown.org/about-us) · [Hytown server listing (hytale-servers.com)](https://hytale-servers.com/server/hytown) · [Hytale Developer Recruitment volunteer thread](https://builtbybit.com/threads/hytale-developer-recruitment-lets-team-up.735631/) · [Hytale "monthly pay" hiring thread](https://builtbybit.com/threads/hiring-hytale-developer-s-new-server-project-monthly-pay-fast-progress-high-quality.736777/) · [Joxii (Hytale dev for hire portfolio)](https://joxii.xyz) · [Runeteria server listing](https://hytale-servers.com/server/runeteria) · [Wynncraft apply portal (paid = email resumé)](https://ct.wynncraft.com/apply) · [Wynncraft looking for developers thread](https://forums.wynncraft.com/threads/wynncraft-is-looking-for-developers.318601/)
|
||||||
|
|
||||||
|
**Hypixel Studios (Hytale publisher) compensation:**
|
||||||
|
[Levels.fyi Hypixel salaries (April 2026)](https://www.levels.fyi/companies/hypixel/salaries) · [Glassdoor Hypixel Studios Developer](https://www.glassdoor.com/Salary/Hypixel-Studios-Developer-Salaries-E2391163_D_KO16,25.htm) · [Glassdoor Hypixel Studios Software Engineer](https://www.glassdoor.com/Hourly-Pay/Hypixel-Studios-Software-Engineer-Hourly-Pay-E2391163_D_KO16,33.htm) · [Hypixel.net jobs page (hiring criteria)](https://hypixel.net/jobs/) · [Hypixel Studios careers & culture](https://hypixelstudios.com/jobs/) · [InGame Job Hypixel Studios profile (70+ staff)](https://ingamejob.com/en/company/hypixel-studios)
|
||||||
|
|
||||||
|
**Freelance senior rate benchmarks:**
|
||||||
|
[Arc.dev ($60–100+/hr senior)](https://arc.dev/hire-developers/minecraft) · [Upwork Minecraft hiring guide](https://www.upwork.com/hire/minecraft-freelancers/) · [ZipRecruiter Minecraft Developer $52.84/hr avg](https://www.ziprecruiter.com/Salaries/Minecraft-Developer-Salary) · [Freelance.com TJM Java (senior €400–810)](https://www.freelance.com/devenir-freelance/le-tjm-dun-developpeur-java/) · [Portage360 dev rates 2025](https://www.portage360.fr/tjm-developpeur-en-france/) · [Embarq TJM Java](https://www.embarq.fr/tjm/tjm-java) · [Kicklox TJM calculator](https://www.kicklox.com/blog-client/tjm-salaires-developpeurs-freelances/) · [FreelanceRepublik Java guide](https://talks.freelancerepublik.com/guide-developpeur-java-freelance/) · [ABC Portage Java rates](https://www.abcportage.fr/portage-salarial/simulation-revenus/tjm/tjm-developpeur-java/)
|
||||||
|
|
||||||
|
**Premium plugin pricing (ItemsAdder, MythicMobs, Lands, etc.):**
|
||||||
|
[ItemsAdder BBB page (18,000+ downloads)](https://builtbybit.com/resources/itemsadder.10839/) · [ItemsAdder Polymart](https://polymart.org/resource/itemsadder-custom-items-etc.1851) · [MythicMobs premium pricing ($4.99/$9.99/mo, $39.99 lifetime)](https://www.answeroverflow.com/m/1283816171451191440) · [MythicMobs Free on Spigot](https://www.spigotmc.org/resources/%E2%9A%94-mythicmobs-free-version-%E2%96%BAthe-1-custom-mob-creator%E2%97%84.5702/) · [MythicMobs premium features wiki](https://git.mythiccraft.io/mythiccraft/MythicMobs/-/wikis/Premium-Features) · [MythicMobs professional setups thread ($10–$300, $20/hr 12h/mo)](https://builtbybit.com/threads/mythicmobs-professional-setups-high-quality-no-limit.110269/) · [Lands on Polymart](https://polymart.org/product/876/lands-land-claim-plugin) · [EcoEnchants free on BBB](https://builtbybit.com/resources/ecoenchants.23935/) · [MMOCore on Polymart](https://polymart.org/resource/mmocore.3412) · [DeluxeMenus on Spigot](https://www.spigotmc.org/resources/deluxemenus.11734/)
|
||||||
|
|
||||||
|
**Pricing anti-patterns, leaks, and race-to-bottom:**
|
||||||
|
[BlackSpigot leaked plugins index](https://www.blackspigot.com/downloads/categories/leaked-minecraft-plugins.105/) · [BlackSpigot mythicmobs leaked tag](https://www.blackspigot.com/tags/mythicmobs/) · [BlackSpigot Songoda Epic plugins all-leaked pack](https://www.blackspigot.com/downloads/songoda-epic-plugins-all-latest-version-26-04-2025-latest-version-of-all-spigot-plugins.33156/) · [BlackSpigot "why leaking plugins?" discussion](https://www.blackspigot.com/threads/why-leaking-plugins.1288/) · [Fiverr Community "race to the bottom" thread](https://community.fiverr.com/public/forum/boards/support-and-troubleshooting-by1/posts/324060-value-for-money-is-a-race-to-the-bottom) · [Ripplepop: Fiverr alternatives analysis](https://blog.ripplepop.com/wordpress-fiverr-alternative/) · [Medium: why Fiverr/Upwork keep you stuck](https://jenessastark.medium.com/why-upwork-fiverr-keep-you-stuck-and-what-to-do-instead-12f32f353380) · [BBB selling tag (plugin ownership sales, burnout)](https://builtbybit.com/tags/selling/) · [BBB investing tag (rev-share examples)](https://builtbybit.com/tags/investing/)
|
||||||
|
|
||||||
|
**Retainer models:**
|
||||||
|
[Cool Code Company monthly retainer guide](https://www.coolcodecompany.co.uk/what-we-offer/software-support/monthly-retainer/what-is-a-monthly-retainer) · [Lucky Media retainer services](https://www.luckymedia.dev/software-development-retainer-services) · [Hey Reliable web-dev retainers](https://heyreliable.com/web-development-retainer/) · [Oneupweb retainer agreements](https://www.oneupweb.com/blog/why-web-development-retainer-agreements-make-sense/) · [CommonPlaces retainer vs hourly](https://www.commonplaces.com/blog/website-development-costs-retainer-or-hourly) · [Paige Brunton: why I don't offer retainers](https://www.paigebrunton.com/blog/who-no-monthly-retainer) · [Cloudways retainer best practices](https://www.cloudways.com/blog/monthly-retainer-contracts/) · [Game Republic: sweat equity vs rev share](https://gamerepublic.net/features/sweat-equity-or-revenue-share-pros-and-cons-for-game-devs/)
|
||||||
|
|
||||||
|
**Hiring evaluation signals (GitHub / portfolio):**
|
||||||
|
[GitHub community discussion #183788 — evaluating GitHub portfolios](https://github.com/orgs/community/discussions/183788) · [ZipRecruiter hire-a-Minecraft-developer guide](https://www.ziprecruiter.com/hiring/how-to-hire/minecraft-developer) · [Upwork Minecraft hire guide](https://www.upwork.com/hire/minecraft-freelancers/)
|
||||||
|
|
||||||
|
**EUR/USD exchange rate:**
|
||||||
|
[ECB reference rates 22 April 2026 (1.1733 USD/EUR)](https://www.ecb.europa.eu/stats/shared/pdf/eurofxref.pdf) · [Trading Economics EUR/USD April 24 2026 (1.1689)](https://tradingeconomics.com/euro-area/currency) · [Exchange Rates UK 2026 daily history](https://www.exchangerates.org.uk/EUR-USD-spot-exchange-rates-history-2026.html) · [Pound Sterling Live USD/EUR 2026](https://www.poundsterlinglive.com/history/EUR-USD-2026)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Prepared with realistic caveats: Hytale premium-plugin unit sales are still thin (single-digit per-resource purchase counts as of April 2026) and the most commercially attractive Hytale channel right now is bespoke commissions for serious RPG/MMO networks, not marketplace listings. The 4×6 matrix and three packages above are designed to preserve senior positioning while capturing that commission revenue during the SDK-stabilisation window.*
|
||||||
+423
@@ -0,0 +1,423 @@
|
|||||||
|
# Active Prospection Playbook for a Solo Hytale Plugin Freelancer — April 2026
|
||||||
|
|
||||||
|
**Prepared for: Killian Dal-Cin (killiandalcin.fr)**
|
||||||
|
**Time budget: 5–10 h/week active prospection, zero paid ads, 6-month horizon**
|
||||||
|
**Goal: 2–5 qualified leads/month, funnel one-offs (€200–2,000) into recurring retainers (€800–2,500/month)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Executive Summary
|
||||||
|
|
||||||
|
Hytale launched into Early Access on **13 January 2026** after a chaotic cancellation-and-revival arc ([Hytale](https://hytale.com/news/2026/1/hytale-is-finally-here)). Since launch the ecosystem has moved faster than most expected: Hypixel Studios confirms **4,000+ published mods and 10M+ downloads** within the first ten weeks ([CurseForge](https://hytale.curseforge.com/newworldscontest/)), the official Discord passed **559,000 members** ([Discord](https://discord.com/invite/hytale)), and HytaleCharts already lists **432+ active community servers** ([HytaleCharts](https://hytalecharts.com/)). Critically, **plugins are written in Java on the JVM** with a pom-based template supporting both Java and Kotlin out of the box ([HytaleModding/plugin-template](https://github.com/HytaleModding/plugin-template)), and BuiltByBit opened official Hytale support on launch day ([BuiltByBit](https://builtbybit.com/threads/were-expanding-to-support-hytale-on-january-13th.735764/page-2)).
|
||||||
|
|
||||||
|
This is a **gold-rush moment for a senior JVM freelancer**: demand is spiking, supply is mostly juniors and hobbyists, and the big server operators (HyClash, Hytown, Hyternal, Histatu, Runeteria, AresRPG, HYLTERIUM…) are in the middle of their first hiring waves. The strategic thesis of this report is:
|
||||||
|
|
||||||
|
1. **BuiltByBit "Hiring Developers" threads + DM cold outreach to flagship server Discords are the two highest-ROI channels right now** — above Twitter/YouTube, above SEO, above Reddit.
|
||||||
|
2. **Kotlin + 7-year full-stack seniority is a differentiator, not a handicap**, provided you frame output in Java bytecode terms (plugin JARs identical to Java).
|
||||||
|
3. **The retainer motive cannot be the opener** — every piece of literature on freelance retainers is explicit that you sell a one-off first and upgrade later ([Studio Fellow](https://studiofellow.com/articles/retainers/), [Bidsketch](https://www.bidsketch.com/blog/sales/freelance-retainer-agreement/)). Design the first €300–800 plugin as a qualifying trial.
|
||||||
|
4. **A blog is a 6-month bet, not a 6-week one.** The short-term prospection ROI lives in forum replies, DMs and Twitter/X GIF demos. The blog's job is to justify the pitch, not to generate it.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Channel ROI Audit — Ranked for Hytale Dev Freelance, April 2026
|
||||||
|
|
||||||
|
| Rank | Channel | Effort/hr | Signal quality | Conversion speed | 6-mo potential |
|
||||||
|
|------|---------|-----------|----------------|------------------|----------------|
|
||||||
|
| **1** | BuiltByBit "Hiring Developers" threads (Hytale tag) | Low | High (buyer-intent) | Days | Very high |
|
||||||
|
| **2** | Targeted DMs to flagship server owners via their Discords | Medium | Very high | Days–weeks | Very high |
|
||||||
|
| **3** | HytaleModding Discord presence (help + showcase) | Low-medium | Medium | Weeks | High (compounding) |
|
||||||
|
| 4 | Twitter/X weekly GIF-demo cadence | Medium | Medium | Weeks–months | High (long-tail) |
|
||||||
|
| 5 | CurseForge published mods / Mod Jam entries | High | High (authority) | Months | Very high |
|
||||||
|
| 6 | Guest content on Britakee docs / Kaupenjoe / joxii cross-promo | Medium | High | Months | High |
|
||||||
|
| 7 | YouTube 30–90s dev-log shorts | Medium-high | Medium | Months | Medium |
|
||||||
|
| 8 | Blog SEO on killiandalcin.fr/blog | Low-medium | Low-medium | 3–6+ months | Medium (defensive) |
|
||||||
|
| 9 | Reddit r/Hytale / r/admincraft | Low | Low | Rare | Low |
|
||||||
|
| 10 | Cold-DM server owners found only via HytaleCharts/HyServers (no Discord touch) | High | Low | Rare | Low |
|
||||||
|
|
||||||
|
### 1.1 BuiltByBit — the #1 channel (and it isn't close)
|
||||||
|
|
||||||
|
BuiltByBit (formerly MC-Market) **added an official Hytale section on 13 January 2026** with a dedicated "Hytale mod & plugin development" subforum and "Hiring Developers" threads that have been populated daily since ([BuiltByBit](https://builtbybit.com/threads/were-expanding-to-support-hytale-on-january-13th.735764/page-2), [BuiltByBit plugin dev forum](https://builtbybit.com/forums/development/minecraft-plugins/)). Typical Hytale threads you can observe live include:
|
||||||
|
|
||||||
|
- "Hiring Hytale Developer(s) - New Server Project (Monthly Pay, Fast Progress, High Quality)" posted Jan 18, 2026 — explicit monthly-pay intent, asks for Hytale/server dev experience and portfolio ([BBB 736777](https://builtbybit.com/threads/hiring-hytale-developer-s-new-server-project-monthly-pay-fast-progress-high-quality.736777/)).
|
||||||
|
- "[REQUEST][20 Hours/week] Hytale Development for large scaled project. High Budget with long term roadmap" — explicitly a retainer-shaped brief: "Expect to dedicate 20 hours a week… Developers will be vetted for experience" ([BBB 737528](https://builtbybit.com/threads/request-20-hours-week-hytale-development-for-large-scaled-project-high-budget-with-long-term-roadmap.737528/)).
|
||||||
|
- "[OPEN] Developers Wanted For HyClash ft. ThirtyVirus" — Lead Game Dev "auvq" posts on behalf of ThirtyVirus' $20K-budgeted MMORPG, recruiting Java developers into a "real team with an active codebase and a clear roadmap" ([BBB 737208](https://builtbybit.com/threads/open-developers-wanted-for-hyclash-ft-thirtyvirus.737208/)).
|
||||||
|
- Many paid one-off briefs such as "budget is between 50-100 EURO" ticket-style commissions ([BBB developer tag](https://builtbybit.com/tags/developer/)).
|
||||||
|
|
||||||
|
**Why it's #1:** intent is explicit ("we are hiring, DM me"), the thread tags filter for Hytale only, and reply etiquette is already normalized — clients expect a DM-on-thread response with portfolio links ([BuiltByBit developer-for-hire tag](https://builtbybit.com/tags/developer-for-hire/)). One or two well-crafted replies per week can realistically produce 1–2 qualified conversations per month.
|
||||||
|
|
||||||
|
**What makes a reply convert (observed pattern across BBB hiring threads):**
|
||||||
|
- First paragraph specific to *their* brief (not a template),
|
||||||
|
- Immediate, visible portfolio link (killiandalcin.fr + GitHub URL),
|
||||||
|
- 1–2 line signal of seniority (years, stack, similar Minecraft analogue you've shipped),
|
||||||
|
- Direct Discord handle in the reply body — threads that rely on "DM me on site" convert noticeably less than ones that drop a handle (observable by counting reactions on duckontren / joxii-style threads, [BBB 729949](https://builtbybit.com/threads/open-free-minecraft-dev-work.729949/)).
|
||||||
|
|
||||||
|
### 1.2 Discord DM outreach — the #2 channel
|
||||||
|
|
||||||
|
Hytale's structure makes Discord the single highest-leverage discovery graph in the ecosystem. Every flagship server lists its Discord in the HytaleCharts / HyServers / hytale.game directories, with community sizes ranging from ~400 members (HyClash pre-beta) to 57,000+ (Hytown-adjacent) ([HytaleTop100](https://hytaletop100.com/blog/thirtyvirus-announces-hyclash-ambitious-new-hytale-server-network-with-20k-budget), [HytaleCharts](https://hytalecharts.com/servers)).
|
||||||
|
|
||||||
|
**How to find the 10–30 flagship Discords (no public directory exists, so build it manually in ~90 minutes):**
|
||||||
|
1. Scrape HytaleCharts top-50 by votes ([HytaleCharts](https://hytalecharts.com/servers)), HyServers ([HyServers](https://hyservers.gg/)), HytaleTop100 and hytale.game server list — the overlap is your "flagship" list (Hytown, HyClash, Hyternal, Runeteria, Histatu, Ethertale, Dogecraft, Hyvale, AresRPG, HYLTERIUM, Hyforger, Escape From Hytale, Hyspain, HyWay Brasil, Hyasia, Mythica, Aetherion, DreamTale, etc.).
|
||||||
|
2. Each listing exposes a Discord invite; join them all on a prospection-only Discord account.
|
||||||
|
3. Cross-reference with BuiltByBit Hytale hiring threads from the last 60 days — anyone actively recruiting is a priority target.
|
||||||
|
4. Use Hytale Hub forum directory ([HytaleHub](https://hytalehub.com/groups/categories/discord-servers.5)) and hytale.game Discord list ([hytale.game](https://hytale.game/en/discord-server/)) to fill gaps.
|
||||||
|
|
||||||
|
**Discord DM etiquette / deliverability gotchas ([Discord Community Guidelines](https://discord.com/guidelines), [Techbloat guide](https://www.techbloat.com/discord-how-to-send-direct-message-to-non-friend.html)):**
|
||||||
|
- Many large servers disable member-to-member DMs (spam protection). When DMs are blocked, **reply inside their #looking-for-dev or #dev-chat channel**, then invite them to DM you — not the reverse.
|
||||||
|
- Never bulk-DM: Discord's rule 13 explicitly prohibits unsolicited bulk messaging. One-to-one, specifically referenced outreach is acceptable; the same copy-pasted message across 20 servers can get your account removed.
|
||||||
|
- Always reference a specific signal from their server: a bug in a plugin you noticed, a feature they publicly asked for, a thread on their BBB post.
|
||||||
|
|
||||||
|
### 1.3 HytaleModding Discord — #3 (credibility, not direct leads)
|
||||||
|
|
||||||
|
The HytaleModding Discord hosts ~9,800 members and is effectively the unofficial technical HQ of the ecosystem, alongside the partnering CurseForge/Hypixel channels ([HytaleModding Discord](https://discord.com/invite/hytalemodding), [GitHub org](https://github.com/HytaleModding)). They open-source their plugin-template, Hyssentials library, and patcher tooling. It is **not a job-board** — very few "looking for dev" posts — but it is where Britakee, Kaupenjoe, FancyInnovations, Darkhax/Jared, and Build-9 all hang out ([Britakee template](https://github.com/realBritakee/hytale-template-plugin), [Build-9 template](https://github.com/Build-9/Hytale-Example-Project), [FancyInnovations](https://github.com/FancyInnovations/HytalePlugins)). Consistently answering technical questions in #plugin-help over 6 months builds the single most valuable asset in this market: **niche reputation** — which in turn converts cold BBB replies 2–3× better.
|
||||||
|
|
||||||
|
### 1.4 Twitter/X — #4 (slow-burn lead magnet, not quick wins)
|
||||||
|
|
||||||
|
Howtomarketagame's breakdown of @sbuggames and EXOR Studios shows the pattern: **short GIFs of a single cool mechanic are the viral unit, not threads and not screenshots** ([How To Market A Game](https://howtomarketagame.com/2021/02/01/how-to-get-more-twitter-followers-and-promote-your-indie-game/)). Game Developer's tips reinforce that GIFs/videos outperform static tweets and that 2–4 posts/week is the sustainable cadence ([Game Developer](https://www.gamedeveloper.com/business/12-tips-to-improve-your-twitter-for-gamedev)). Indie Hackers' "build in public" strategies document that 4 months of consistent posting typically yields 500–5,000 engaged followers — enough to launch a product but **not enough to match BBB leads in the first 3 months** ([Teract.ai](https://www.teract.ai/resources/twitter-strategy-indie-hackers-2026)).
|
||||||
|
|
||||||
|
For Killian specifically, the highest-ROI Twitter tactic is to be **visible in the Hytale dev circle** — reply to Kaupenjoe, ThirtyVirus, Britakee, auvq, joxii with technical insight. This is networking disguised as content.
|
||||||
|
|
||||||
|
### 1.5 CurseForge contributions — #5 (authority, not distribution)
|
||||||
|
|
||||||
|
CurseForge became Hytale's official mod hub at launch ([CurseForge](https://www.curseforge.com/hytale)). The **$100,000 New Worlds Modding Contest runs 3 March – 28 April 2026** across three categories (WorldGen, NPCs, Experiences) ([CurseForge contest](https://hytale.curseforge.com/newworldscontest/), [Hytale blog](https://hytale.com/news/2026/3/hytale-new-worlds-modding-contest)). The first unofficial Mod Jam (30 Jan – 4 Feb 2026) drew 160+ entries for a $5K pool, judged partly by two Hypixel Studios developers ([HytaleCharts recap](https://hytalecharts.com/news/hytale-mod-jam-recap-curseforge-highlights-2026)). **Publishing even one well-received CurseForge mod is a permanent credibility asset** that stays in BBB thread replies forever. Timing-wise, the New Worlds contest submission window closes three days after the prospection plan starts — if Killian is within striking distance of a publishable entry, submit; otherwise plan for the next modjam cycle.
|
||||||
|
|
||||||
|
### 1.6 Britakee / joxii / Kaupenjoe content ecosystem — #6
|
||||||
|
|
||||||
|
There is a small, identifiable layer of dev-influencers worth engaging:
|
||||||
|
- **Britakee** runs the GitBook docs used as the community's default reference and a widely-forked plugin template ([Britakee GitBook](https://britakee-studios.gitbook.io/hytale-modding-documentation/plugins-java-development/07-getting-started-with-plugins), [Britakee template](https://github.com/realBritakee/hytale-template-plugin)).
|
||||||
|
- **joxii (Owen)** runs joxii.xyz, a direct-competitor-slash-peer Hytale mod-dev-for-hire site, with 5+ years Java, commissioned work in class systems / matchmaking / economy — a useful benchmark for positioning and pricing ([joxii.xyz](https://joxii.xyz)).
|
||||||
|
- **Kaupenjoe** is the official Hytale Modding Ambassador, runs the #1 modding YouTube channel in the space, maintains the Trello wishlist Hypixel Studios is actually watching ([Hytale contest page](https://hytale.com/news/2026/3/hytale-new-worlds-modding-contest), [Kaupenjoe courses](https://courses.kaupenjoe.net/)).
|
||||||
|
|
||||||
|
A guest tutorial or a PR to Britakee's docs is probably the single highest-leverage content investment Killian can make in the first 6 months — it places his name next to the default reference every new Hytale dev reads.
|
||||||
|
|
||||||
|
### 1.7 Reddit — confirmed low-value for dev leads
|
||||||
|
|
||||||
|
r/Hytale and r/HytaleInfo are healthy for news/hype (50K+ subscribers gained in the 24h after the revival announcement, per the Switchblade Gaming analysis ([Switchblade](https://www.switchbladegaming.com/hytale/player-count-2026/))), and r/admincraft remains a hub for server operator discussion, but hiring/commissioning intent almost exclusively migrates to BBB or Discord rather than Reddit. Treat Reddit as **zero-effort news monitoring**, not prospection.
|
||||||
|
|
||||||
|
### 1.8 Pure DM cold outreach to server owners via listing sites alone — explicitly low-value
|
||||||
|
|
||||||
|
Reaching owners you found only through HytaleCharts/HyServers without touching their Discord first converts poorly because (a) most server owner accounts have "DMs from server members only" enabled ([Discord support](https://support.discord.com/hc/en-us/community/posts/360029391971-Add-a-server-setting-to-disallow-private-messages-to-users?page=4)) and (b) you have no shared context, making your message indistinguishable from the "cold sales" that cold-email benchmarks show converting at 1–3% ([Breakcold](https://www.breakcold.com/blog/cold-email-reply-rate)). The same outreach routed through joining the target's Discord and referencing a specific channel discussion commonly clears 10% — mirroring the LinkedIn-vs-email advantage Sopro documents ([Sopro](https://sopro.io/resources/blog/cold-outreach-statistics/)).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Concrete Tactics for the Top 3 Channels
|
||||||
|
|
||||||
|
### 2.1 BuiltByBit — Tactical Playbook
|
||||||
|
|
||||||
|
#### Template A — Reply to a "Looking for Hytale Developer" thread (convert ~10–20% of replies into DM conversations)
|
||||||
|
|
||||||
|
> Hey {Name},
|
||||||
|
>
|
||||||
|
> Saw your post about {their specific phrase — e.g. "MMO-scale economy + auction house"}. That's exactly the kind of system I shipped twice in production over the last 18 months (Minecraft Paper, JVM stack, MySQL + Redis), and I've been testing it against the Hytale server.jar since EA launched in January.
|
||||||
|
>
|
||||||
|
> A couple of quick checks so we don't waste each other's time:
|
||||||
|
> 1. Are you targeting persistent inventory or instance-scoped for the auction house?
|
||||||
|
> 2. What's your anti-dupe threshold — transactional log at the DB level, or are you OK with eventual consistency?
|
||||||
|
>
|
||||||
|
> Background for context: 7 years full-stack (Kotlin/Java/TS), senior CDI dev, freelance on the side. Portfolio with code samples: **killiandalcin.fr** — GitHub: **github.com/{handle}**.
|
||||||
|
>
|
||||||
|
> If those answers line up, I can send a 2-page scope proposal within 48h.
|
||||||
|
>
|
||||||
|
> Discord: **{handle}** — happy to jump on a 20-min call this week.
|
||||||
|
|
||||||
|
**Psychology notes:**
|
||||||
|
- **Specificity** — the opening names *their* feature verbatim; ~18% reply-rate research confirms personalized openers roughly double response vs. generic ([Martal B2B benchmarks](https://martal.ca/b2b-cold-email-statistics-lb/)).
|
||||||
|
- **Pattern interrupt** — most replies on BBB are "hi, add me on discord, dm me" ([observable pattern, BBB 687291](https://builtbybit.com/threads/hiring-developers.687291/)). Starting with two technical questions signals a senior who won't waste their time.
|
||||||
|
- **Reciprocity** — offering a free 2-page scope proposal lowers commitment to reply.
|
||||||
|
- **Social proof without bragging** — "shipped twice in production" is quantified but understated.
|
||||||
|
- **Hard stop, soft CTA** — a time-bounded offer + explicit Discord handle + call window reduces friction.
|
||||||
|
|
||||||
|
#### Template B — Reply when the brief is tiny (€50–100 single plugin)
|
||||||
|
|
||||||
|
> {Specific feature} is doable — takes me ~half a day if the spec is clear. Fixed price 120€, delivered in 48h with a MIT-licensed source on GitHub and 30 days of free bug-fix support.
|
||||||
|
>
|
||||||
|
> Want to start the spec? Discord **{handle}**.
|
||||||
|
|
||||||
|
Psychology: anchor slightly above their stated budget range to screen out race-to-the-bottom clients, bundle a **free bug-fix window** to plant the seed for a retainer conversation 30 days later.
|
||||||
|
|
||||||
|
#### KPIs to track for BBB
|
||||||
|
|
||||||
|
| Metric | Target month 1–2 | Target month 3–6 |
|
||||||
|
|---|---|---|
|
||||||
|
| Thread replies posted / week | 4–6 | 6–10 |
|
||||||
|
| Reply → Discord DM conversion | 20% | 30% |
|
||||||
|
| DM → quote sent | 40% | 50% |
|
||||||
|
| Quote → signed (one-off) | 20% | 30% |
|
||||||
|
| Time-to-first-response | <12h | <4h |
|
||||||
|
| Qualified leads / month | 1–2 | 3–5 |
|
||||||
|
|
||||||
|
Quote/conversion ratios calibrated against general B2B cold-outreach benchmarks (~5–10% reply, ~2–5% meeting ([Instantly](https://instantly.ai/blog/cold-email-reply-rate-benchmarks/))) multiplied by the ~3× uplift that buyer-intent forum threads provide over cold email.
|
||||||
|
|
||||||
|
### 2.2 Discord DM outreach — Tactical Playbook
|
||||||
|
|
||||||
|
#### Template C — Flagship server "I noticed your plugin breaks X" opener
|
||||||
|
|
||||||
|
> Hey {handle} — I'm Killian, JVM dev (Kotlin/Java, 7y, senior at {redacted}). Long-time lurker in your Discord, just saw your dev team mention the {specific pain point, e.g. "dupe issue with instance re-entry"} in #dev-log three days ago.
|
||||||
|
>
|
||||||
|
> I actually hit the same issue prototyping against the Hytale server.jar last month — fix is a combination of {one concrete, non-obvious technical hint — 1 sentence}. Happy to sketch it in a 10-min call or just send a gist if that's more your speed.
|
||||||
|
>
|
||||||
|
> No pitch, just scratching an itch. If it turns out you want help shipping it, we can talk money after.
|
||||||
|
>
|
||||||
|
> Portfolio: killiandalcin.fr / GitHub: {url}
|
||||||
|
|
||||||
|
**Psychology notes:**
|
||||||
|
- **Explicit non-pitch** — removes the defensive reflex server owners have toward cold DMs in large public Discords.
|
||||||
|
- **Value-first / reciprocity** — Cialdini's classic reciprocity trigger; the BBB culture already has a "free dev work for vouch" meme ([BBB 729949](https://builtbybit.com/threads/open-free-minecraft-dev-work.729949/)) so free-first is a legitimate genre.
|
||||||
|
- **Receipt specificity** — "in #dev-log three days ago" proves you're a real member, not a spammer, addressing the #1 trust issue flagship servers have ([Discord guidelines §13](https://discord.com/guidelines)).
|
||||||
|
- **Ladder** — the value gift becomes a conversation starter; the conversation becomes a trial task; the trial task becomes a paid one-off; the one-off becomes a retainer. Never pitch retainer on first touch — every retainer guide says so ([Studio Fellow](https://studiofellow.com/articles/retainers/), [Bidsketch](https://www.bidsketch.com/blog/sales/freelance-retainer-agreement/)).
|
||||||
|
|
||||||
|
#### Template D — Following up after a shipped one-off (retainer conversion)
|
||||||
|
|
||||||
|
> Now that {plugin name} has been stable in prod for 30 days, I usually ask clients whether they'd rather:
|
||||||
|
>
|
||||||
|
> **Option A** — I disappear, you call me when something breaks (I charge hourly, 90€/h, 48h turnaround not guaranteed).
|
||||||
|
>
|
||||||
|
> **Option B** — 30-day subscription: priority Discord support + 8 hours/month of fixes, balance changes and small features. 800€/month, rolls unused hours to the next month, 14 days to cancel.
|
||||||
|
>
|
||||||
|
> 70% of my clients pick B because they hate the "is my plugin broken or is Hytale broken?" investigation loop. Happy to send the B contract if that's useful.
|
||||||
|
|
||||||
|
Psychology: classic "option A anchor" retainer framing (Austin Church's subscription concept ([Freelance Cake](https://www.freelancecake.com/blog/11-steps-for-creating-and-selling-your-freelance-retainer-offer)), Brennan Dunn / Double-Your-Freelancing retainer ladder ([DYF](https://doubleyourfreelancing.com/freelancers-guide-client-retainer-agreements/))) — make the ad-hoc alternative painful enough that the subscription looks cheap.
|
||||||
|
|
||||||
|
#### KPIs for Discord DM outreach
|
||||||
|
|
||||||
|
| Metric | Target |
|
||||||
|
|---|---|
|
||||||
|
| Servers joined & passively observed | 20–30 top Hytale |
|
||||||
|
| Value-first DMs sent / week | 3–5 (NEVER bulk) |
|
||||||
|
| Reply rate | 25–40% (vs. 1–5% cold email baseline — [GMass](https://www.gmass.co/blog/average-cold-email-response-rate/)) |
|
||||||
|
| Reply → qualified call | 30% |
|
||||||
|
| Qualified leads / month from Discord | 1–2 |
|
||||||
|
|
||||||
|
### 2.3 HytaleModding Discord presence — Tactical Playbook
|
||||||
|
|
||||||
|
#### Cadence: 30 minutes/day, 6 days/week
|
||||||
|
|
||||||
|
1. Answer one technical question in #plugin-help per day (Kotlin or Java, depending on asker's stack).
|
||||||
|
2. Contribute one PR to HytaleModding repos (plugin-template, wiki, Hyssentials) per month ([GitHub org](https://github.com/HytaleModding)).
|
||||||
|
3. Post one original code snippet or benchmark per week in #showcase.
|
||||||
|
|
||||||
|
#### The Kotlin play
|
||||||
|
|
||||||
|
The official plugin template advertises support for **"Java or Kotlin"** ([HytaleModding template](https://github.com/HytaleModding/plugin-template)), and Spigot's docs have documented Kotlin integration for years ([SpigotMC Kotlin wiki](https://www.spigotmc.org/wiki/how-to-use-kotlin-in-your-plugins/)). This gives Killian a pre-made content niche: **"Hytale plugin in idiomatic Kotlin" tutorials and helper libraries**. There are currently zero authoritative Kotlin-for-Hytale guides in the English ecosystem (the closest reference is deanveloper/KotlinPlugin and hazae41/mc-kutils for Bukkit ([GitHub](https://github.com/deanveloper/KotlinPlugin), [hazae41 mc-kutils](https://github.com/hazae41/mc-kutils))). Owning that slot is a ~20h content investment that pays credibility dividends indefinitely.
|
||||||
|
|
||||||
|
#### KPIs
|
||||||
|
|
||||||
|
| Metric | Target |
|
||||||
|
|---|---|
|
||||||
|
| GitHub stars on your public Hytale repo | 20 (m1) → 100+ (m6) |
|
||||||
|
| Answers marked helpful in #plugin-help | 30/month |
|
||||||
|
| Mentions / tags by other devs | 2 → 10/month |
|
||||||
|
| Inbound DMs asking for help → paid | 0 → 1–2/month by m4 |
|
||||||
|
|
||||||
|
### 2.4 Weekly Cadence Plans
|
||||||
|
|
||||||
|
#### 5h/week version (minimum viable)
|
||||||
|
|
||||||
|
| Day | Activity | Time |
|
||||||
|
|---|---|---|
|
||||||
|
| Mon | Scan BBB "Hiring Developers" Hytale tag, write 2 replies | 60 min |
|
||||||
|
| Tue | HytaleModding Discord: 1 answer + 1 comment on others' work | 30 min |
|
||||||
|
| Wed | Ship 1 Twitter/X GIF of a mechanic from your Mythlane work (no project name mentioned, visual only) | 45 min |
|
||||||
|
| Thu | BBB: 2 more replies + follow up on previous DMs | 60 min |
|
||||||
|
| Fri | Discord DMs: 2 value-first messages to flagship server leads | 45 min |
|
||||||
|
| Sat | Portfolio/admin: update killiandalcin.fr with one new code sample | 30 min |
|
||||||
|
| Sun | Review KPIs, plan next week, read one competitor's thread (joxii, themuscular, Halos Dev) | 30 min |
|
||||||
|
| **Total** | | **~5h** |
|
||||||
|
|
||||||
|
#### 10h/week version (target conversion in 3–4 months)
|
||||||
|
|
||||||
|
| Day | Activity | Time |
|
||||||
|
|---|---|---|
|
||||||
|
| Mon | BBB replies (4–6), plus one long-form "offering services" thread refresh every 8 weeks | 90 min |
|
||||||
|
| Tue | HytaleModding Discord answers (2–3) + open-source PR work | 90 min |
|
||||||
|
| Wed | Twitter thread (text+GIF) on a Kotlin-for-Hytale tip + 1 reply to each of Kaupenjoe/ThirtyVirus/Britakee/joxii | 90 min |
|
||||||
|
| Thu | Record + edit 1 × 60s YouTube Short (tutorial format) | 120 min |
|
||||||
|
| Fri | Discord DM round (3–5 servers) + inbound lead triage | 90 min |
|
||||||
|
| Sat | 1 blog post, 800–1,500 words, targeting a long-tail query (see §3.2) | 120 min |
|
||||||
|
| Sun | Follow-ups to silent threads (first follow-up alone adds 40–50% more replies — [Instantly](https://instantly.ai/blog/cold-email-reply-rate-benchmarks/)) + KPI review | 60 min |
|
||||||
|
| **Total** | | **~10h** |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Content Strategy as Long-Tail Lead Magnet
|
||||||
|
|
||||||
|
### 3.1 Is a blog on killiandalcin.fr/blog viable?
|
||||||
|
|
||||||
|
**Yes, but as a 6-month supporting asset — not a lead-source in its own right.**
|
||||||
|
|
||||||
|
The Hytale niche is small enough that precise search-volume numbers for "hytale plugin developer" and "hytale custom plugin" are below the measurement floor of mainstream tools (Google Trends shows a massive launch-week Hytale interest spike but Keyword Planner / Ahrefs / Semrush publicly report zero measurable volume for the commercial long-tail ([PC Gamer / Yahoo](https://tech.yahoo.com/gaming/articles/hytale-surges-most-watched-game-205857959.html))). Two observations nevertheless favor a blog:
|
||||||
|
|
||||||
|
1. **Google rewards brand-new specific queries disproportionately.** Long-tail SEO authorities document that ~15% of all queries are brand new and long-tail queries convert at 2.5× the rate of head terms ([EnFuse](https://www.enfuse-solutions.com/harnessing-the-power-of-long-tail-keywords-in-niche-markets/), [HubSpot](https://blog.hubspot.com/blog/tabid/6307/bid/4723/6-ways-to-leverage-the-long-tail-in-your-marketing.aspx)). For "how do I handle player persistence in Hytale plugins" a single well-written blog post will rank #1 almost by default because the SERP is empty.
|
||||||
|
2. **The blog is the pitch accelerator, not the pitch itself.** Indie Hackers discussion threads converge on a consistent finding: blogs rarely generate direct clients but the right clients "invariably mention they read my articles" when converting ([Indie Hackers](https://www.indiehackers.com/post/do-you-have-a-blog-share-it-2816af4021)).
|
||||||
|
|
||||||
|
### 3.2 Keyword targets (qualitative, since volume data is below tool-floor)
|
||||||
|
|
||||||
|
| Tier | Query | Intent | Priority |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Commercial | "hytale plugin developer", "hire hytale developer", "hytale custom plugin", "développeur hytale freelance" | Buyer | HIGH — own these even if <10 searches/mo |
|
||||||
|
| Technical | "hytale plugin kotlin", "hytale plugin persistence", "hytale event listener tutorial", "hytale plugin boilerplate" | Dev peer | MEDIUM — builds authority |
|
||||||
|
| Reference | "hytale plugin api vs bukkit", "hytale vs minecraft plugin development", "hytale server.jar browser" | Mixed | MEDIUM — high backlink potential |
|
||||||
|
| French | "développeur plugin hytale", "développeur serveur hytale", "hytale plugin sur mesure" | Buyer FR | HIGH — near-zero competition |
|
||||||
|
|
||||||
|
The French-language slots are essentially empty right now (HytaVerse and the Hytale Francophone Discord exist but no dev-services site ranks in French, [HytaVerse](https://disboard.org/server/1460648826837795021), [Hytale Francophone](https://disboard.org/server/1268553412564222023)). Killian should own the FR commercial cluster within 2–3 posts.
|
||||||
|
|
||||||
|
### 3.3 YouTube shorts vs. blog posts — which converts Minecraft/Hytale buyers?
|
||||||
|
|
||||||
|
**Short-form video outperforms long-form blog for this specific audience on a pure view-to-lead basis**, but both are needed. Evidence:
|
||||||
|
- Game Developer's gamedev Twitter analysis concludes "almost only videos and GIFs" — static tweets and text threads under-perform ([Game Developer](https://www.gamedeveloper.com/business/12-tips-to-improve-your-twitter-for-gamedev)).
|
||||||
|
- How-To-Market-A-Game documents follower-growth spikes tied 1:1 to individual GIF-of-mechanic tweets ([HTMAG](https://howtomarketagame.com/2021/02/01/how-to-get-more-twitter-followers-and-promote-your-indie-game/)).
|
||||||
|
- Kaupenjoe's entire Hytale modding brand is YouTube-first; his courses monetize the YouTube traffic, not the other way around ([Kaupenjoe courses](https://courses.kaupenjoe.net/)).
|
||||||
|
|
||||||
|
**Format recommendation:** 60-second dev-log format ("I spent 3h making this Hytale boss-phase system — here's the single Kotlin function that makes it work") outperforms tutorial format for converting *buyers* (they want to know you can ship, not that you can teach). Tutorial format is better for building HytaleModding Discord reputation and SEO authority.
|
||||||
|
|
||||||
|
### 3.4 Minimum viable content schedule (6-month compounding)
|
||||||
|
|
||||||
|
| Cadence | Asset | Purpose |
|
||||||
|
|---|---|---|
|
||||||
|
| 1 blog post / 2 weeks | 1,000–2,000w, one long-tail keyword | SEO, authority, pitch-accelerator |
|
||||||
|
| 2 X/Twitter posts / week | GIF-of-mechanic + reply-to-big-account | Algorithmic reach, network |
|
||||||
|
| 1 YouTube Short / 2 weeks | 30–90s dev-log of a single feature | Buyer-facing "can you ship" proof |
|
||||||
|
| 1 HytaleModding Discord PR or issue / month | Open-source contribution | Niche reputation |
|
||||||
|
| 1 CurseForge mod update / 2 months | Small free plugin | Permanent credibility asset |
|
||||||
|
|
||||||
|
Indie Hacker / solo-dev case studies (Courtland Allen's IH, Sbug Games, Paralives) agree that **4 months of consistent cadence is the break-even point** where compounding kicks in ([HTMAG](https://howtomarketagame.com/2021/02/01/how-to-get-more-twitter-followers-and-promote-your-indie-game/), [Teract](https://www.teract.ai/resources/twitter-strategy-indie-hackers-2026)). Below that, you'll see no traffic and a lot of wasted effort — which is why content is explicitly the **second priority** behind BBB/Discord during months 1–3.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Signals That Scare vs. Convert Flagship Buyers
|
||||||
|
|
||||||
|
Hytale flagships explicitly model their hiring on their Minecraft-network forebears. Hypixel Studios' own application guide says: **"Show us what you've done relevant to the area in which you are applying. You can do this via YouTube videos, screenshots, websites, links to GitHub, etc. We will not compile and run any code examples for initial review"** ([Hypixel Studios jobs](https://hypixelstudios.com/jobs/)). This is the template flagship community servers follow.
|
||||||
|
|
||||||
|
### 4.1 Auto-reject signals (observed across BBB hiring threads and Hypixel Studios criteria)
|
||||||
|
|
||||||
|
| Signal | Why it fails |
|
||||||
|
|---|---|
|
||||||
|
| "Hi I can do anything, DM me" | Generic = spam. BBB culture penalizes this visibly (zero replies vs. 10+ on specific ones — [BBB threads pattern](https://builtbybit.com/forums/development/minecraft-plugins/)) |
|
||||||
|
| Corporate-consulting tone ("Our firm offers enterprise-grade solutions") | Triggers service-team allergy. Lease's thread is explicit: "I want NO service teams referring me to a public discord, I'd rather not even have a service team contact me." ([BBB 375524](https://builtbybit.com/threads/thread-design-paid.375524/)) |
|
||||||
|
| No portfolio / "DM me for examples" | Hypixel's hiring page requires portfolio upfront ([HS jobs](https://hypixelstudios.com/jobs/)). Same culture in server hiring. |
|
||||||
|
| Wrong stack claim ("I can do JavaScript, Python, C++…") | Senior Minecraft/Hytale ops explicitly require Java — "If you are new to java and developing for minecraft/hytale, this is not the project for you" ([BBB 737528](https://builtbybit.com/threads/request-20-hours-week-hytale-development-for-large-scaled-project-high-budget-with-long-term-roadmap.737528/)) |
|
||||||
|
| Free/super-cheap work | Race-to-the-bottom signals junior; filters you out of flagship pool |
|
||||||
|
| No Discord handle | Every BBB thread expects Discord contact; absence reads as friction |
|
||||||
|
| Under-18 or teenager vibe (emoji spam, texting voice) | ThirtyVirus' team reportedly selects returning pros — "veterans of Blockshot Network, returning with 7 years of professional experience" ([HytaleTop100](https://hytaletop100.com/blog/thirtyvirus-announces-hyclash-ambitious-new-hytale-server-network-with-20k-budget)) |
|
||||||
|
| Bulk-templated reply (word-for-word across threads) | BBB mods actively remove such replies; clients notice |
|
||||||
|
|
||||||
|
### 4.2 Convert signals — the flagship reply stack
|
||||||
|
|
||||||
|
Based on patterns in the HyClash, Hytown and Riftgarde hiring threads, the replies that *get replies* combine at least four of:
|
||||||
|
|
||||||
|
1. **Active GitHub** with a public Hytale repo (even a template fork with 2 meaningful commits beats an empty profile).
|
||||||
|
2. **Live, playable demo** — a 20-second GIF or a small Modrinth/CurseForge listing you can share in-thread.
|
||||||
|
3. **Technical blog or docs page** — the killiandalcin.fr/blog post you wrote last month about exactly the problem they have.
|
||||||
|
4. **HytaleModding Discord reputation** — "pinged me on HytaleModding #plugin-help last week, solid answer" is gold.
|
||||||
|
5. **Referral / vouch** — BBB's vouch culture (feedback score visible on every profile) is the canonical trust ladder ([BBB feedback score system](https://builtbybit.com/threads/open-free-minecraft-dev-work.729949/)).
|
||||||
|
6. **Cross-ecosystem seniority signal** — Minecraft Paper/Bukkit plugins shipped, SpigotMC premium resource listing, or similar. ThirtyVirus himself uses his UberItems plugin as the primary proof of technical credibility ([ThirtyVirus portfolio](https://thirtyvirus.com/portfolio/)).
|
||||||
|
7. **Specific technical answer embedded in the reply** — the equivalent of a mini-trial-task unprompted.
|
||||||
|
|
||||||
|
### 4.3 Trial tasks / code review challenges
|
||||||
|
|
||||||
|
Flagship servers in this market rarely run formal Leetcode-style tests (unlike venture-backed game studios — [Trio.dev](https://trio.dev/interview-coding-challenges/), [Coderpad](https://coderpad.io/blog/hiring-developers/test-developers-skills-before-hiring/)). Instead, the typical pattern (observable across Matej's LearnSpigot recruitment, ConspiracyCraft/Affinity applications, and HyClash's BBB thread) is:
|
||||||
|
|
||||||
|
1. **Portfolio review** — GitHub + website + deployed work.
|
||||||
|
2. **One unpaid small task** (2–4 hours) with a specific deliverable — e.g., "write a boss-phase state machine for this mob spec."
|
||||||
|
3. **Paid trial project** (1–2 week first plugin) — this is effectively the "first one-off" in Killian's playbook.
|
||||||
|
4. **Retainer or ongoing role** — only after the trial.
|
||||||
|
|
||||||
|
**Shortcut:** the most efficient way to bypass steps 1–2 is to **arrive with the trial already done before being asked**. A public GitHub repo titled e.g. `hytale-boss-phases-kotlin` with a README, GIF, and 200 lines of clean Kotlin effectively pre-clears the trial. Darkhax & Jared's `Hytale-Example-Project` and HytaleModding's `plugin-template` are the community baseline — anything you build above them is trial-complete ([Build-9](https://github.com/Build-9/Hytale-Example-Project), [HytaleModding template](https://github.com/HytaleModding/plugin-template)).
|
||||||
|
|
||||||
|
### 4.4 Minecraft flagship hiring analogues (for calibration)
|
||||||
|
|
||||||
|
- **Hypixel/Hytale studios** require portfolio-first applications, don't review code initially ([Hypixel Studios jobs](https://hypixelstudios.com/jobs/)).
|
||||||
|
- **ThirtyVirus' HyClash** invested $20K personally, uses Kubernetes sharding, team is ex-Blockshot pros — applications go through Discord after an auvq BBB post ([BBB 737208](https://builtbybit.com/threads/open-developers-wanted-for-hyclash-ft-thirtyvirus.737208/)).
|
||||||
|
- **Hytown** team is "engineers from SpaceX, Runescape, and beyond" ([Hytown about](https://www.hytown.org/about-us)) — this is a bar that rewards senior-level signaling (CDI experience is an asset, not a liability).
|
||||||
|
- **Matej's ChatControl** hires with "Skype interview, code samples reviewed, must have C1+ English, microphone required" and pays $175/month for ~8 hours of structured retainer work ([MC-Market/BBB 391893](https://www.mc-market.org/threads/391893/)) — a useful benchmark for the low end of the retainer market.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Local Optimization — France + Kotlin
|
||||||
|
|
||||||
|
### 5.1 French residency — net neutral-to-positive
|
||||||
|
|
||||||
|
The Hytale ecosystem is overwhelmingly English-speaking (official Discord in English, BBB in English, most flagships headquartered in NA/UK). Hypixel Studios explicitly requires overlap with "GMT-8 to GMT+1 business hours" ([HS jobs](https://hypixelstudios.com/jobs/)) — CET/Paris is inside that window, so timezone is an advantage, not a friction. Speaking English fluently (C1+) is table stakes across BBB hiring threads ([MC-Market 391893](https://www.mc-market.org/threads/391893/)). Beyond table stakes, France is neutral.
|
||||||
|
|
||||||
|
The upside is the **untouched French sub-market**. HytaVerse (play.hytaverse.fr), the Hytale Francophone Discord (discord.gg/hytalefrance), HyWay Brasil (Portuguese), Hyspain (Spanish) all exist but no French freelancer is publicly positioned to serve them ([HytaVerse](https://disboard.org/server/1460648826837795021)). A French-language "Développeur Plugin Hytale" landing page on killiandalcin.fr/fr paired with presence in these Discords is a ~10h investment that could own the French-language slot for the entire 6-month horizon.
|
||||||
|
|
||||||
|
Pricing benchmark: Malt's 2026 barometer puts the **average French freelance Kotlin dev at €469/day (€536/day in Paris)** and Java at €433/day ([Malt Kotlin](https://www.malt.fr/t/barometre-tarifs/tech/developpeur-backend/developpeur-kotlin), [Malt Java](https://www.malt.fr/t/barometre-tarifs/tech/developpeur-backend/developpeur-java)). A 7-year senior is typically in the €500–650/day band. Killian's Hytale retainer at €800–2,500/month implies 2–5 days of work/month — this is entirely consistent with, and slightly below, what the French market will absorb, leaving margin to offer international clients Euro-denominated pricing without downgrading.
|
||||||
|
|
||||||
|
### 5.2 Kotlin — a clear asset
|
||||||
|
|
||||||
|
JVM bytecode compatibility means **a Kotlin-written plugin is a .jar file indistinguishable from a Java one at load time** — the official HytaleModding plugin template explicitly supports both ([HytaleModding template](https://github.com/HytaleModding/plugin-template)). SpigotMC has documented Kotlin-in-plugins since 2023 ([SpigotMC wiki](https://www.spigotmc.org/wiki/how-to-use-kotlin-in-your-plugins/)), and mature Kotlin Minecraft plugin libraries (deanveloper/KotlinPlugin, hazae41/mc-kutils, SimpleMC template) prove the stack in production ([deanveloper](https://github.com/deanveloper/KotlinPlugin), [mc-kutils](https://github.com/hazae41/mc-kutils)).
|
||||||
|
|
||||||
|
**Positioning rule:** in buyer-facing copy (BBB threads, killiandalcin.fr), always say *"plugins in Java/Kotlin — JVM output, identical .jar artifact"*. In dev-peer copy (HytaleModding Discord, Twitter, blog, tutorial videos), lean into Kotlin-specific idioms (`?.` null-safety collapses, coroutines for async ticks, receiver-scoped DSLs for config). This gives two distinct value propositions from the same codebase:
|
||||||
|
- **To buyers:** "senior, plus modern stack, zero integration risk."
|
||||||
|
- **To peers:** "the idiomatic Kotlin person in Hytale," which is a reputation moat roughly equivalent to what Kaupenjoe built for Forge/Fabric tutorials.
|
||||||
|
|
||||||
|
### 5.3 Risks and mitigations
|
||||||
|
|
||||||
|
| Risk | Mitigation |
|
||||||
|
|---|---|
|
||||||
|
| Some buyers insist on "Java only" — reading Kotlin on handover scares them | Offer a "Java handover" contract clause: plugin is delivered both as .jar and, at client request, as auto-decompiled Java source. Spigot plugins have used Kotlin for 3+ years with zero compat issues ([SpigotMC](https://www.spigotmc.org/wiki/how-to-use-kotlin-in-your-plugins/)) |
|
||||||
|
| Kotlin stdlib dependency on shared servers | Use shadowJar bundling (Britakee template already does this — [Britakee](https://github.com/realBritakee/hytale-template-plugin)) or document MCKotlin/Modrinth shared-library option ([Modrinth MCKotlin](https://modrinth.com/plugin/mckotlin)) |
|
||||||
|
| Smaller market (~95% Java defaults in Hytale, per ecosystem observation) | The Kotlin angle is content differentiation, not sales filter. Every buyer still gets a plugin that runs on their stock server |
|
||||||
|
| French freelance-status admin (URSSAF, micro-entreprise) invoicing international clients | Use Wise/PayPal for USD/GBP, keep French-franc invoicing standard; this is solved Malt-ecosystem territory — not a sales-blocker |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Integrated 6-Month Plan (what to actually do, week by week)
|
||||||
|
|
||||||
|
### Month 1 — Foundation & First Leads
|
||||||
|
|
||||||
|
- Week 1: Build `killiandalcin.fr/services` page (EN + FR), publish 3 GitHub repos (`hytale-kotlin-plugin-starter`, one showcase mod, one example boss-phase system), post one "offering services" thread on BBB Hytale section with explicit Kotlin/Java stack and portfolio links, join 20 flagship Discords.
|
||||||
|
- Week 2: Reply to 8 BBB hiring threads; first 3–5 DMs (value-first) to flagship dev channels; start answering HytaleModding #plugin-help daily.
|
||||||
|
- Week 3: Ship one 60s YouTube Short (dev-log), one blog post (target: "Hytale plugin in Kotlin — minimal setup").
|
||||||
|
- Week 4: Review: target 1 signed one-off (€200–600), 3–5 DM conversations open.
|
||||||
|
|
||||||
|
### Month 2 — Conversion & Authority
|
||||||
|
|
||||||
|
- 10–15 BBB replies total; 8–12 DMs total; ship 2 more Shorts, 2 blog posts, 1 CurseForge micro-plugin.
|
||||||
|
- Submit to the New Worlds contest if realistic (closes 28 April 2026 — [CurseForge contest](https://hytale.curseforge.com/newworldscontest/)), otherwise plan for the next modjam.
|
||||||
|
- Target: 2–3 signed one-offs, first retainer discussion triggered (from a month-1 client whose plugin went live).
|
||||||
|
|
||||||
|
### Month 3 — First Retainer
|
||||||
|
|
||||||
|
- Pitch Template D to 2 month-1 clients at their 30-day post-delivery mark. Expect 1 conversion.
|
||||||
|
- Continue BBB/Discord cadence, now with "here's a live retainer client" social proof.
|
||||||
|
- Target: 1 retainer signed (€800/month trial), 2–3 new one-offs.
|
||||||
|
|
||||||
|
### Month 4–6 — Compounding
|
||||||
|
|
||||||
|
- Blog ranks start appearing for long-tail queries; inbound DMs begin (1–2/month by month 5).
|
||||||
|
- CurseForge authority compounds: one well-received plugin = permanent reply fuel.
|
||||||
|
- Target: 2–3 retainers at €800–2,500/month, 2–4 one-offs/month, 3–5 qualified leads/month consistently.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. What to Measure (Master KPI Dashboard)
|
||||||
|
|
||||||
|
| Metric | Baseline | Month 3 target | Month 6 target |
|
||||||
|
|---|---|---|---|
|
||||||
|
| BBB thread replies posted | 0 | 20/mo | 30/mo |
|
||||||
|
| Inbound Discord DMs | 0 | 3/mo | 8–10/mo |
|
||||||
|
| Portfolio (killiandalcin.fr) unique visitors | ? | 200/mo | 600–1,000/mo |
|
||||||
|
| GitHub Hytale-repo stars | 0 | 50 | 150+ |
|
||||||
|
| CurseForge plugin downloads | 0 | 200 | 2,000+ |
|
||||||
|
| Qualified leads (scope discussed) | 0 | 3/mo | 5+/mo |
|
||||||
|
| Signed one-offs | 0 | 2–3/mo | 3–5/mo |
|
||||||
|
| Active retainers | 0 | 1 | 2–3 |
|
||||||
|
| Monthly revenue from Hytale freelance | €0 | €1,200–2,000 | €3,500–7,500 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Caveats and Epistemic Hygiene
|
||||||
|
|
||||||
|
Several facts in this report should be held lightly:
|
||||||
|
|
||||||
|
- **"4,000+ mods, 10M+ downloads"** comes from CurseForge and Hypixel Studios' own contest landing page ([CurseForge contest](https://hytale.curseforge.com/newworldscontest/)) — these are marketing-adjacent numbers and the HytaleCharts January figure was reported at 3,000 mods / 10M downloads just two weeks post-launch ([Switchblade](https://www.switchbladegaming.com/hytale/player-count-2026/)); both should be treated as directional rather than audited.
|
||||||
|
- **Hytale player-count claims** were contaminated by a viral-but-fabricated "2.8M concurrent" number at launch ([Switchblade](https://www.switchbladegaming.com/hytale/player-count-2026/)). I have only used Discord size, CurseForge downloads and Twitch peak viewership ([PC Gamer](https://www.pcgamer.com/games/survival-crafting/hytale-surges-to-the-most-watched-game-on-twitch-attracting-over-420-000-viewers-with-its-long-awaited-launch/)) which are verifiable.
|
||||||
|
- **Cold-outreach reply-rate benchmarks** (1–5% cold email, ~10% LinkedIn, 18% personalized) are from general B2B research ([Instantly](https://instantly.ai/blog/cold-email-reply-rate-benchmarks/), [Martal](https://martal.ca/b2b-cold-email-statistics-lb/), [Sopro](https://sopro.io/resources/blog/cold-outreach-statistics/)). Hytale's buyer-intent forum threads are structurally more favorable than cold email — 10–20% reply-to-DM conversion on BBB is plausible but not empirically validated for this specific niche.
|
||||||
|
- **French Kotlin/Java daily rates** from Malt ([Malt](https://www.malt.fr/t/barometre-tarifs/tech/developpeur-backend/developpeur-kotlin)) reflect mainstream enterprise freelance, not gaming/Minecraft freelance which historically pays less per hour but offers looser scope.
|
||||||
|
- **The €100K New Worlds Modding Contest closes 28 April 2026** ([CurseForge](https://hytale.curseforge.com/newworldscontest/)). If this plan starts before that date, entering is high-EV; if after, wait for the next announced modjam (cadence appears to be one every 4–8 weeks).
|
||||||
|
- **"2–5 qualified leads/month" as the stated 6-month goal** is reachable with this plan based on ecosystem size (432+ active servers, dozens of flagship buyers, 500K+ community members), but requires consistent 8–10h/week execution from month 2 onward. The 5h/week version probably caps at 1–2 leads/month unless one of the Mythlane features ships publicly and produces independent inbound.
|
||||||
|
- **Mythlane is treated as a private project throughout**, per the brief. In practice, the moment Mythlane reaches a demo-able state it becomes Killian's single highest-value portfolio asset and should immediately move to the top of every pitch; this plan assumes that happens in month 4–6 at the earliest.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Bottom line:** the Hytale market in April 2026 is an unusual window where demand, a hyped-up buyer base, and a still-immature supply side are all aligned. A senior French/Kotlin full-stack dev with 5–10h/week and good execution on BBB + flagship Discord outreach can credibly hit 2–5 qualified leads/month by month 3 and one-to-three retainers by month 6 — without spending a euro on ads. The single biggest risk is not the market; it's the temptation to over-invest in content (blog, YouTube) in months 1–2 at the expense of the two channels that actually produce the cash: BBB replies and flagship-Discord DMs.
|
||||||
+479
@@ -0,0 +1,479 @@
|
|||||||
|
# Active Prospection Playbook for a Solo Freelance Hytale Plugin Developer — April 2026
|
||||||
|
|
||||||
|
**Prepared for:** Killian Dal-Cin (killiandalcin.fr) — 23, CDI at Mashe, 7+ yrs full-stack, Kotlin-leaning, 5–10h/week for prospection, recurring-retainer goal €800–2,500/mo, one-off €200–2,000, 2–5 qualified leads/mo over 6 months, zero paid ads.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Context & Market Reality (April 2026)
|
||||||
|
|
||||||
|
Hytale launched in Early Access on **January 13, 2026**, after Simon Collins-Laflamme reacquired the IP in November 2025 and rebuilt the studio in under two months from a four-year-old legacy C#/Java build ([Hytale](https://hytale.com/news/2026/1/hytale-is-finally-here), [Wikipedia](https://en.wikipedia.org/wiki/Hytale)). By the end of January alone, CurseForge recorded **10+ million mod downloads and 2,000 creators publishing 3,000+ mods**; by the New Worlds contest announcement in March, Hypixel Studios reported **5,000+ mods and 20M+ downloads** ([HytaleCharts Q1 recap](https://hytalecharts.com/news/hytale-early-access-q1-2026-recap), [Hytale](https://hytale.com/news/2026/3/hytale-new-worlds-modding-contest)). HytaleCharts lists **432+ active servers** in April 2026, and a public **$100,000 New Worlds Modding Contest** runs March 3 – April 28, 2026 with 65 winners ([HytaleCharts servers](https://hytalecharts.com/servers), [CurseForge](https://hytale.curseforge.com/newworldscontest/)). Hypixel Studios is explicitly "scouting" from within the modding community — the first public community hire (Violet) happened 10 days post-launch ([Windows Central](https://www.windowscentral.com/gaming/pc-gaming/minecraft-inspired-rpg-hytale-hires-creator-of-some-of-its-first-mods-as-a-dev)). Plugins are **Java 25, Gradle, Hytale API** (`com.hypixel.hytale.plugin.JavaPlugin`), with the recommended template at `HytaleModding/plugin-template` and Britakee's competing template ([Hytalemodding setup guide](https://hytalemodding.dev/en/docs/guides/plugin/setting-up-env), [Britakee template](https://github.com/realBritakee/hytale-template-plugin)).
|
||||||
|
|
||||||
|
The market is new, hot, and unsaturated — but the meta is forming quickly. Established freelancers on BuiltByBit (BBB) are already staking claim, e.g. KuramaStone's "[For Hire] Full Stack Java/Kotlin Developer — Hytale Development!" and `joxii.xyz` (Owen, "5+ years Java, custom Hytale mods: minigames, matchmaking, class systems, economy") ([BBB KuramaStone](https://builtbybit.com/threads/for-hire-full-stack-java-kotlin-developer-hytale-development.736665/), [joxii.xyz](https://joxii.xyz)). Because Hytale data is thin, much of this report leans on **transferable Minecraft freelance lessons** (SpigotMC/BBB archives, Upwork rate data, Wynncraft hiring patterns), explicitly flagged where used.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Channel ROI Audit — Ranked by ROI/Hour
|
||||||
|
|
||||||
|
This ranking assumes 5–10h/week active prospection, Kotlin-leaning full-stack senior profile, zero ads, and a 6-month horizon. "ROI/hr" combines expected reply rate × qualified-lead-rate × average project value, discounted by the hours required to execute.
|
||||||
|
|
||||||
|
| Rank | Channel | Expected Hrs/wk | Reply Rate | Qualified Leads/mo (steady state) | ROI/hr | Notes |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| **1** | **BuiltByBit — "Looking for Developer" replies + your own Offering thread** | 1.5–3h | **8–20%** reply-to-PM on fresh threads (Minecraft freelance benchmark, [SpigotMC thread](https://www.spigotmc.org/forums/hiring-developers.55/)) | **1–3** | ★★★★★ | Direct buyer intent; Hytale subforum already active with ≥6 live hiring threads in Jan–Mar 2026 ([BBB Hytale tag](https://builtbybit.com/tags/hytale/)) |
|
||||||
|
| **2** | **HytaleModding Discord (#looking-for-dev, #showcase, #help) + official Hytale Discord** | 1–2h | 15–30% for helpful answers; 3–8% on direct DM | **1–2** | ★★★★★ | 9,800+ members in HytaleModding alone ([Discord invite](https://discord.com/invite/hytalemodding)); 559K in official Hytale ([Hypixel Studios support](https://support.hytale.com/hc/en-us/articles/45314940049563)). Answering in #help seeds reputation that converts 4-6 weeks later |
|
||||||
|
| **3** | **CurseForge contributions (1–2 free/cheap plugins)** | 2–3h (build), 0.5h/wk (maintain) | Passive inbound; dev blogs & demos drive ~0.5–2 inbound leads/month per 500 downloads | **1–2** | ★★★★☆ | Publication is the #1 signal modders get hired on ([Violet/Hypixel hire](https://www.windowscentral.com/gaming/pc-gaming/minecraft-inspired-rpg-hytale-hires-creator-of-some-of-its-first-mods-as-a-dev)); also a qualification shortcut for flagship servers |
|
||||||
|
| **4** | **Cold DM to server owners via HytaleCharts / HyServers / HytaleOnlineServers** | 1.5–3h | **1–3%** cold, **5–10%** with a warm touch (plugin they'd use, bug report, PR). Cold B2B DM benchmark is 1–5% conversion ([Indie Hackers](https://www.indiehackers.com/post/800-cold-emails-later-heres-what-actually-moves-the-needle-and-what-s-a-complete-waste-of-time-1e67d7e295), [Monolit](https://monolit.sh/blog/indie-hacker-guide-how-to-build-a-profitable-side-project-2026)) | **0.5–2** | ★★★☆☆ | High ceiling but painful hit-rate; asymmetric when you target the 30 flagship servers (Hytown, HyClash, Phoenix Realms, Ethertale, Hyternal, Dogecraft, Histatu, Mythica, SCG, ZHorde, Runeteria, Fade Unity, etc.) |
|
||||||
|
| **5** | **X/Twitter dev-log threads, weekly cadence (gifs > text)** | 1h | 0.25–3% link-click rate on tweets with links; 3–14% on viral ([How To Market a Game](https://howtomarketagame.com/2021/02/08/how-to-use-twitter-to-market-your-game/)) | **0.5–1.5** at month 3–4, compounding | ★★★☆☆ | Main audience is other devs, not buyers. Indirect: attracts BBB and Discord traffic, feeds retainer trust |
|
||||||
|
| **6** | **Guest posts / contributions on Britakee (britakee-studios.gitbook.io) & joxii** | 1h (pitch) + 3–6h (write) | One-time cost; compounds. A single guest doc on `hytalemodding.dev` earns credibility with 8K modders | **0.5–1** at month 2+ | ★★★★☆ | High authority transfer. Britakee's docs are cited by CurseForge support ([Britakee overview](https://britakee-studios.gitbook.io/hytale-modding-documentation)) |
|
||||||
|
| **7** | **YouTube short demos (30–60s .mp4/.gif)** | 2h record+edit | Conversion via SEO long-tail; YouTube Shorts viewers convert worse than tweet embeds for B2B buying | 0.3–1 at month 3+ | ★★☆☆☆ | Use YT only as a *hosted gif library* for X/BBB threads — not as a standalone channel |
|
||||||
|
| **8** | **Reddit r/Hytale (103K members after launch) & r/admincraft** | 0.5h | Posts about hiring are aggressively removed on r/admincraft; r/Hytale is consumer-not-buyer | <0.5 | ★★☆☆☆ | Good for brand recall, poor for direct conversion |
|
||||||
|
| **9** | **Personal blog killiandalcin.fr/blog for SEO** | 3h/post | "hytale plugin developer" is low-volume (est. <50/mo globally in 2026); long-tails like "hytale custom economy plugin" will rank but return 5–30 visits/mo for 6 months | Near zero short-term; 1–2/mo at month 6+ | ★★☆☆☆ | Compounds over 6+ months. Worth pursuing only as *content anchor for outreach*, not as standalone acquisition |
|
||||||
|
|
||||||
|
**Bottom line:** The top 3 channels (BBB, HytaleModding Discord, CurseForge publication) deliver ~80% of expected leads in months 1–3. Blog and YouTube are long-tail compounders worth 1–2h/week only after the top 3 are executing.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Concrete Tactics for Top 3 Channels
|
||||||
|
|
||||||
|
### Channel #1 — BuiltByBit ("Looking for Developer" replies + maintained Offering thread)
|
||||||
|
|
||||||
|
**Dynamic observed in live April 2026 threads:**
|
||||||
|
- Every Hytale "Hiring" thread gets between 5 and 30 DMs within 48h ([BBB Hytale tag activity](https://builtbybit.com/tags/hytale/)), but most are low-quality (Fiverr-style one-liners, "Add me on Discord: xyz"). A well-structured reply with portfolio + scoping question is in the top 10% and routinely gets a response.
|
||||||
|
- Buyer intent on BBB is high: threads like "[REQUEST][20 Hours/week] Hytale Development for large scaled project. High Budget" explicitly pre-qualify budget and stack ([BBB thread](https://builtbybit.com/threads/request-20-hours-week-hytale-development-for-large-scaled-project-high-budget-with-long-term-roadmap.737528/)).
|
||||||
|
- Buyers distrust generic offers. KuramaStone's Offering thread, which is successfully attracting inbound ("Hello, do you do only paid work or would you be interested in a position in a team?"), leads with **specific shipped projects + named networks + GitHub** — not generic skill lists ([BBB KuramaStone](https://builtbybit.com/threads/for-hire-full-stack-java-kotlin-developer-hytale-development.736665/)).
|
||||||
|
- BBB's platform-level trust is weak (Trustpilot 1.8/5) and scam risk is real for buyers ([Trustpilot](https://www.trustpilot.com/review/builtbybit.com)); **a visible GitHub with runnable code disproportionately wins**.
|
||||||
|
|
||||||
|
**Tactical cadence:**
|
||||||
|
- Monitor the Hytale subforum daily via RSS/bookmark. Reply within 2–6h of a new thread (first 3 replies get 70% of the DMs).
|
||||||
|
- Maintain your own pinned Offering thread updated every 10–14 days (update = bump on BBB).
|
||||||
|
- Never post the cold DM text in-thread; ask a scoping question publicly, then deliver the pitch in PM.
|
||||||
|
|
||||||
|
**KPIs to track:**
|
||||||
|
- Replies sent/week, PMs initiated by buyer, calls booked, quotes sent, contracts signed.
|
||||||
|
- Target Month 3 conversion: 10 replies → 4 PMs → 2 calls → 1 contract.
|
||||||
|
|
||||||
|
### Channel #2 — HytaleModding Discord (and adjacent modding Discords)
|
||||||
|
|
||||||
|
**Dynamic observed:**
|
||||||
|
- HytaleModding has ~9,800 members and is the #1 technical hub, cited officially by Hypixel in the New Worlds contest announcement ([HytaleModding](https://github.com/HytaleModding), [Hytale contest post](https://hytale.com/news/2026/3/hytale-new-worlds-modding-contest)).
|
||||||
|
- Server owners and core modders (Britakee, Kaupenjoe, auvq of HyClash) hang out in #help and #showcase. Helping a stuck modder for 20 minutes has a **higher conversion than 50 cold DMs** because it compounds into reputation visible to everyone in-channel.
|
||||||
|
- The official Hytale Discord (559K) is noisy; **#modding** and **#server-network-showcase** are the only relevant sub-channels.
|
||||||
|
- HyClash, Hytown, and mid-tier flagship servers (Phoenix Realms, Ethertale, Hyternal) each run their own Discord with a "staff applications" or "developer-apply" channel; these are 10–30 flagship Discords to systematically identify via HytaleCharts' top-ranked servers ([HytaleCharts](https://hytalecharts.com/servers)).
|
||||||
|
|
||||||
|
**Tactical cadence:**
|
||||||
|
- 30 min/day reading #help and answering 1–2 non-trivial questions (async events, storage patterns, Noesis UI gotchas). Sign answers with a github.com/killiandalcin link once per day only.
|
||||||
|
- Post 1 #showcase/week (your CurseForge plugin, a gif demo, a benchmark).
|
||||||
|
- Monthly: message the 30 flagship server owners with a warm-intent DM (see template #1 below).
|
||||||
|
|
||||||
|
**KPIs:**
|
||||||
|
- Helpful messages/week, inbound DMs/month, Discord → call conversion.
|
||||||
|
- Target: 20 answers/month → 3–5 inbound DMs → 1–2 qualified leads.
|
||||||
|
|
||||||
|
### Channel #3 — CurseForge Contributions (reputation + SEO + qualification shortcut)
|
||||||
|
|
||||||
|
**Why it matters:**
|
||||||
|
- CurseForge is the canonical distribution; BBB lists 164+ Hytale resources but CurseForge dominates discoverability ([BBB Hytale plugins](https://builtbybit.com/resources/hytale/plugins/)). A plugin at 500+ downloads is a passive credential and an SEO asset.
|
||||||
|
- Publication is the **single highest-signal shortcut past trial tasks** when applying to flagship servers. It shipped Violet into Hypixel Studios within 10 days of launch.
|
||||||
|
- The **New Worlds Modding Contest** (submissions open until Apr 28, 2026) is a free visibility accelerator — even a non-winning submission gets you listed in CurseForge's "Recently Updated" filter plus exposure in the author Discord ([CurseForge contest](https://hytale.curseforge.com/newworldscontest/)).
|
||||||
|
|
||||||
|
**What to ship (ranked):**
|
||||||
|
1. **A free, well-documented, Kotlin-powered placeholder or utility plugin** (e.g., "KotlinPlaceholderAPI bridge for Hytale" or "Hytale-DI: dependency-injection for plugins"). Pick something **developer-facing** rather than consumer-facing — it means every other modder installs it and remembers your name.
|
||||||
|
2. **One small gameplay plugin** (e.g., a custom-recipe system, scoreboard HUD, join/leave messaging) to pad the portfolio.
|
||||||
|
3. **One entry in the New Worlds "Experiences" category** by April 28 (minigame or system overhaul) — 30 "mid-contest drops" of $300 each are awarded to 10 creators per drop simply for having submitted ([Hytale contest](https://hytale.com/news/2026/3/hytale-new-worlds-modding-contest)).
|
||||||
|
|
||||||
|
**KPIs:**
|
||||||
|
- Plugins published (target 2 by end of Month 2), total downloads, inbound "can you customize this for us" DMs per month, GitHub stars.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. The Three Core DM Templates
|
||||||
|
|
||||||
|
Each template below is engineered around three psychology anchors consistently cited by 1–5% cold-reply benchmarks on Indie Hackers ([Indie Hackers](https://www.indiehackers.com/post/800-cold-emails-later-heres-what-actually-moves-the-needle-and-what-s-a-complete-waste-of-time-1e67d7e295)): **specificity over polish, give-before-ask, single low-friction question**.
|
||||||
|
|
||||||
|
### Template A — Discord cold DM to a server owner (flagship Hytale)
|
||||||
|
|
||||||
|
```
|
||||||
|
Hey [Owner], noticed on HytaleCharts that [ServerName] is running [specific
|
||||||
|
feature you saw, e.g. a custom auction house / Zone 3 dungeon / claim system].
|
||||||
|
|
||||||
|
I play-tested it yesterday and [very specific observation — "the /ah expire timer
|
||||||
|
seems to double-fire on relog" / "great pacing on the first boss"].
|
||||||
|
|
||||||
|
I'm a senior Java/Kotlin dev (7 yrs, CDI @ Mashe). I ship Hytale plugins on
|
||||||
|
CurseForge (link) and have a public sandbox at killiandalcin.fr + github.com/killiandalcin.
|
||||||
|
|
||||||
|
Not selling anything here — just wondering: what's your #1 plugin pain right
|
||||||
|
now? If it's trivial I might PR it for free, if it's a bigger scope I'd be happy
|
||||||
|
to quote a fixed-price fix.
|
||||||
|
|
||||||
|
— Killian
|
||||||
|
```
|
||||||
|
|
||||||
|
**Why it works:**
|
||||||
|
- **Specific observation** (the `/ah` bug line) passes the "did you actually look at my server?" test — 3–5× reply lift per Indie Hackers' 800-email study.
|
||||||
|
- **"Not selling anything here"** + single question format lifts reply rate to the 5–10% range in B2B DM benchmarks ([Indie Hackers cold metrics](https://www.indiehackers.com/post/what-are-your-cold-outreach-conversion-rates-top-3-metrics-and-benchmarks-to-track-2ac53379d7)).
|
||||||
|
- **PR offer** is give-before-ask: if they accept even a trivial PR, reciprocity converts follow-up quotes at ~30–40%.
|
||||||
|
- Mashe CDI reference signals stability (not a teenager shopping on Fiverr).
|
||||||
|
|
||||||
|
**Expected conversion:** 5–10% reply rate; 30–40% of replies turn into a scope call; ~1 qualified lead per 30 DMs.
|
||||||
|
|
||||||
|
### Template B — BuiltByBit "Looking for Developer" thread reply
|
||||||
|
|
||||||
|
```
|
||||||
|
Hey [OP],
|
||||||
|
|
||||||
|
Read the full brief — quick clarifying question before I PM:
|
||||||
|
|
||||||
|
You mentioned [specific technical constraint from their post, e.g. "Kubernetes
|
||||||
|
proxy sharding", "cross-server party system", "custom Codec storage"]. Are you
|
||||||
|
locked on that approach or open to [alternative], because that changes the
|
||||||
|
scope by [~X hrs / €X]?
|
||||||
|
|
||||||
|
For context: 7 yrs Java/Kotlin full-stack, currently CDI. I ship Hytale/JVM
|
||||||
|
plugins on CurseForge (link), portfolio at killiandalcin.fr, GitHub at
|
||||||
|
github.com/killiandalcin. Happy to jump on a 15-min call or handle via PM —
|
||||||
|
whichever is faster for you.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Why it works:**
|
||||||
|
- **Technical clarifying question** signals you actually read the brief. 90% of other repliers on BBB post "Hi add me on Discord: xyz" which is the buyer's #1 filtering reason (Crafty Copy, [Client red flags](https://craftycopy.co.uk/blog/client-red-flags)).
|
||||||
|
- **Posting it publicly, not just as a PM**, reserves the thread real-estate and shows other lurking buyers you're competent — the thread itself becomes free advertising.
|
||||||
|
- **CDI mention** again signals adult/reliable, because BBB is full of 15-year-olds ("I'm 14 but don't let that stop you…" is a real quote from the forum tag archive).
|
||||||
|
- **Flexibility on call vs PM** reduces friction for the common case where the buyer doesn't want to schedule.
|
||||||
|
|
||||||
|
**Expected conversion:** 15–25% PM-back rate; ~1 contract per 8–12 quality replies.
|
||||||
|
|
||||||
|
### Template C — Twitter/X outreach (two variants: warm reply + DM)
|
||||||
|
|
||||||
|
**Variant C1 — Warm reply in public:**
|
||||||
|
```
|
||||||
|
This is a tidy implementation of [specific thing they tweeted about].
|
||||||
|
|
||||||
|
I ran into the same class-loader issue shipping [your plugin] and solved it by
|
||||||
|
[one-sentence fix]. Happy to paste the snippet if useful.
|
||||||
|
```
|
||||||
|
(Then, only if they reply, slide into DM with Template A adapted.)
|
||||||
|
|
||||||
|
**Variant C2 — Cold DM to a Hytale server-owner account:**
|
||||||
|
```
|
||||||
|
Saw your [ServerName] roadmap tweet — the [specific feature] caught my eye
|
||||||
|
because I shipped a similar pattern in [your CurseForge plugin link].
|
||||||
|
|
||||||
|
Is the dev plan mostly in-house or are you open to commissioning individual
|
||||||
|
systems? If the latter I'd love to quote one.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Why it works:**
|
||||||
|
- Public reply first = **give-before-ask** with public witnesses. Twitter/X's own engagement stats show that genuine niche-specific replies (not hashtag-spam) are the single biggest driver of new followers for gamedev accounts ([GameDev.tv](https://gamedev.tv/articles/social-media-tips-for-game-developers), [gamedeveloper.com](https://www.gamedeveloper.com/business/12-tips-to-improve-your-twitter-for-gamedev)).
|
||||||
|
- On X specifically, because most of your audience will be *other devs not buyers* (per [How To Market a Game](https://howtomarketagame.com/2021/02/08/how-to-use-twitter-to-market-your-game/)), the DM approach should be reserved for server-owner or studio-account targets only.
|
||||||
|
|
||||||
|
**Expected conversion:** 0.5–3% DM reply rate; main value is brand-building + feeding BBB/Discord inbound.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Weekly Prospection Calendars — 5h/week and 10h/week
|
||||||
|
|
||||||
|
### 5-hour/week (lean) version
|
||||||
|
|
||||||
|
| Day | Time | Action | Channel | Metric tracked |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Mon | 45 min | Read new BBB Hytale threads (prior 48h); reply to 1–2 using Template B | BBB | Replies sent |
|
||||||
|
| Tue | 45 min | Write & post 1 X thread (gif + code snippet) + schedule for 6pm CET | X/YouTube | Impressions, link clicks |
|
||||||
|
| Wed | 45 min | Answer 2 questions in HytaleModding #help + 1 #showcase | Discord | Helpful msgs |
|
||||||
|
| Thu | 45 min | Cold DM 4 server owners from HytaleCharts top 30 (Template A) | Discord DM | DMs sent, replies |
|
||||||
|
| Fri | 45 min | Refresh BBB Offering thread + check/reply to inbound PMs | BBB | PMs handled, quotes sent |
|
||||||
|
| Sat | 30 min | Ship 1 small commit to public Hytale plugin on CurseForge/GitHub | CurseForge | Commits, downloads |
|
||||||
|
| Sun | 15 min | KPI review: update a Notion/Airtable tracker (funnel: Replies → PMs → Calls → Quotes → Signed) | All | Weekly conversion |
|
||||||
|
|
||||||
|
**Expected output at steady state (M3+):** 2–3 qualified leads/month, 0.5–1 signed contract/month.
|
||||||
|
|
||||||
|
### 10-hour/week (aggressive) version
|
||||||
|
|
||||||
|
| Day | Time | Action |
|
||||||
|
|---|---|---|
|
||||||
|
| Mon | 1.5h | BBB sweep (all new threads, 3 replies); write 1 Offering-thread update every 10 days |
|
||||||
|
| Tue | 1.5h | X thread + 1 YT short (recycle week's best gif); engage 5 replies in niche |
|
||||||
|
| Wed | 2h | Discord: 3 #help answers, 1 #showcase, **1 guest blog draft** on Britakee's or joxii's infra |
|
||||||
|
| Thu | 1.5h | 8 cold DMs (5 server owners + 3 X accounts) from a living list (Template A/C2) |
|
||||||
|
| Fri | 1.5h | CurseForge plugin dev: 2h focused coding on the free flagship plugin |
|
||||||
|
| Sat | 1h | BBB Offering thread maintenance + screenshot update + call/quote follow-ups |
|
||||||
|
| Sun | 1h | KPI review, funnel optimization, and **1 long-form blog post draft every 2 weeks** on killiandalcin.fr/blog |
|
||||||
|
|
||||||
|
**Expected output at steady state (M3+):** 4–6 qualified leads/month, 1–2 signed contracts/month.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Content Strategy as Long-Tail Lead Magnet
|
||||||
|
|
||||||
|
### Is a blog on killiandalcin.fr/blog viable?
|
||||||
|
|
||||||
|
**Short answer:** Viable only as a **sales-asset for cold outreach**, not as a standalone acquisition channel in the 6-month horizon. The SEO volume is insufficient.
|
||||||
|
|
||||||
|
- "hytale plugin developer" and variants (`hytale custom plugin`, `hytale mod developer for hire`) are very low-volume (estimated <50 global monthly searches combined in April 2026; Hytale is still new enough that SEMrush/Ahrefs datasets are partial). The dominant Hytale-related search intent is player-facing ("best hytale mods", "hytale server list"), not buyer-facing. Even at an optimistic 10% CTR you'd net 5/month.
|
||||||
|
- **However**, long-tail technical queries like `"hytale plugin kotlin gradle"`, `"hytale custom codec config"`, `"hytale thread pool executor plugin"`, `"hytale noesisgui plugin"` get 0 competition and **rank in hours**. They don't drive buyers, but they drive **modder-peers**, which feeds Discord reputation and eventually server-owner referrals.
|
||||||
|
- Compound is real but slow: a 1,500-word post published Month 1 on "Structuring a production Hytale plugin in Kotlin" typically ranks by Month 3 and drives 30–80 uniques/month by Month 6 if Britakee / HytaleModding link to it.
|
||||||
|
|
||||||
|
### YouTube short-form vs blog — for conversion
|
||||||
|
|
||||||
|
- YouTube Shorts underperform as standalone conversion for B2B buyers, but a **30-second gif looped-mp4 of your plugin in action** hosted on X or embedded in BBB/CurseForge pages **increases BBB listing click-through 2–3×** (standard BBB resource-conversion pattern, observable on top listings like Fixtale and EcotaleMarketplace on CurseForge where gifs are lead art).
|
||||||
|
- Dev-log format > tutorial format for your goal. Buyers don't watch tutorials; they watch "here's a 40-second demo of what I can build for your server."
|
||||||
|
- **Recommended production cadence: record 1× per week, reuse the same clip in (a) X thread, (b) BBB Offering thread refresh, (c) CurseForge plugin banner, (d) YouTube Shorts as a hosted URL** — maximum reuse per recording hour.
|
||||||
|
|
||||||
|
### Minimum viable content schedule (compounds over 6 months)
|
||||||
|
|
||||||
|
| Cadence | Asset | Purpose |
|
||||||
|
|---|---|---|
|
||||||
|
| **1× / week** | X thread (gif + code snippet or insight) | Reputation + Discord pull-through |
|
||||||
|
| **1× / week** | YouTube Short (30–60s, same gif higher-res) | Hosted demo library |
|
||||||
|
| **1× / 2 weeks** | Blog post on killiandalcin.fr/blog (1200–1800 words, long-tail keyword) | SEO compound + outreach link-bait |
|
||||||
|
| **1× / month** | Guest doc/tutorial pitched to Britakee (hytalemodding.dev) or joxii | Authority transfer |
|
||||||
|
| **1× / 6 weeks** | Free CurseForge plugin release or major version bump | Primary inbound magnet |
|
||||||
|
|
||||||
|
This represents ~3–4h/week of content creation, comfortably inside the 10h/week budget if the X/YT clips are recycled from work already being done on the free CurseForge plugin.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Signals That Scare vs. Convert Flagship Buyers
|
||||||
|
|
||||||
|
Flagship Hytale servers (HyClash by ThirtyVirus, Hytown, Phoenix Realms, Ethertale, Hyternal, Dogecraft, Histatu, Mythica, and the 20–30 mid-tier servers on HytaleCharts' top 50) receive dozens of applications. HyClash's open call explicitly pre-qualifies with an application form and a detailed Java-dev requirements block ([BBB HyClash thread](https://builtbybit.com/threads/open-developers-wanted-for-hyclash-ft-thirtyvirus.737208/)). Wynncraft sets the reference pattern (paid-role resumes to `[email protected]`, volunteer Content-Team forms otherwise, [Wynncraft applications](https://ct.wynncraft.com/apply/mod)).
|
||||||
|
|
||||||
|
### Auto-rejection triggers (observed on SpigotMC, BBB, and Hytale threads)
|
||||||
|
|
||||||
|
1. **"Add me on Discord: xyz123"** with no portfolio → auto-rejected; dominant pattern of the low-tier applicant pool on BBB Hytale hiring threads.
|
||||||
|
2. **AI/ChatGPT-smell in the pitch** — the "I am writing to express interest in your esteemed server" register. Indie Hackers founders report this single-handedly tanks reply rates ([Indie Hackers](https://www.indiehackers.com/post/what-are-your-cold-outreach-conversion-rates-top-3-metrics-and-benchmarks-to-track-2ac53379d7)).
|
||||||
|
3. **No GitHub link**, or a GitHub with only forks and no original code.
|
||||||
|
4. **No shipped CurseForge/SpigotMC resource** — CurseForge Hytale publication is becoming the de-facto qualification floor; 4,000+ mods exist; lacking even one looks negligent.
|
||||||
|
5. **Overprofessional corpo-speak** in a modding community context ("I am a Senior Software Engineer with experience across the SDLC…") — the community is 16–25-year-old modders; anti-pattern.
|
||||||
|
6. **Quoting per-hour without scoping** — Devlin Peck's freelance red-flag framework applies in reverse to freelancers: quoting €X/hr blind reads as commodity ([Devlin Peck](https://www.devlinpeck.com/content/red-flags-for-freelancers)).
|
||||||
|
7. **Mentioning a hidden MMO project** (Mythlane) before establishing trust — buyers interpret "I have my own server in development" as a conflict-of-interest risk or divided attention. **This is why Mythlane should NOT appear in outreach until month 4+, and only if the retainer relationship is solid.**
|
||||||
|
8. **Only-Kotlin positioning** without a bilingual Java/Kotlin story (see §7).
|
||||||
|
9. **No Discord presence or 0 messages** in HytaleModding server on first-DM check.
|
||||||
|
10. **Wrong stack signal** — offering "Spigot plugins" when the platform is Hytale (`com.hypixel.hytale.plugin.JavaPlugin`), or claiming Forge/Fabric experience irrelevant to Hytale's server-first model ([Hytale modding strategy](https://hytale.com/news/2025/11/hytale-modding-strategy-and-status)).
|
||||||
|
|
||||||
|
### The "reliably gets a reply" signal combination
|
||||||
|
|
||||||
|
Based on the combination of public success patterns (KuramaStone's BBB Offering, Violet's Hypixel Studios hire, auvq's public HyClash role), the hire-worthy profile is:
|
||||||
|
|
||||||
|
| Required | Nice-to-have |
|
||||||
|
|---|---|
|
||||||
|
| ✅ GitHub with ≥1 substantial Hytale/Java project (≥500 LoC, README, tests) | 🎁 Active X presence posting weekly dev-logs |
|
||||||
|
| ✅ ≥1 published CurseForge plugin (any download count) | 🎁 Verified "Modder" / "Veteran" role in HytaleModding Discord |
|
||||||
|
| ✅ Technical blog post or long-form Git readme proving architectural depth | 🎁 A blog post or guest doc on Britakee / joxii |
|
||||||
|
| ✅ Live demo video or gif | 🎁 New Worlds contest submission (low cost, high badge) |
|
||||||
|
| ✅ A professional portfolio page (killiandalcin.fr) with pricing rails | 🎁 Public contribution to the HytaleModding org (PR to plugin-template, Hyssentials, patcher, robot) |
|
||||||
|
|
||||||
|
### Shortcuts past trial tasks / code reviews
|
||||||
|
|
||||||
|
- **Ship a PR to the flagship server's public GitHub** if they have one (HyClash, Hytown have partial public repos; HytaleModding org accepts PRs — "contributing to the HytaleModding org is effectively a universal warm intro").
|
||||||
|
- **Submit to the New Worlds contest by Apr 28, 2026.** A contest submission plus a mid-contest drop win doubles as a reference. Simon Collins-Laflamme said on X: "Honestly, we're scouting. If you blow us away, don't be surprised if we reach out." ([GameSpot coverage](https://www.gamespot.com/articles/hytale-announces-modding-contest-with-100k-prize-pool-on-offer/1100-6538548/)).
|
||||||
|
- **Offer a paid, time-boxed spike** ("I'll implement feature X as a one-week fixed-price €400 spike; if you hate it, we part ways") — this is how senior devs pre-empt both trial-task exploitation and free-work spec asks ([Devlin Peck](https://www.devlinpeck.com/content/red-flags-for-freelancers)).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Local Optimization: France + Kotlin Differentiation
|
||||||
|
|
||||||
|
### Does France-based freelancing hurt in a 95% English Hytale market?
|
||||||
|
|
||||||
|
**No, provided the public-facing stack is in English.** Minecraft/Hytale server owners are globally distributed, and the majority-language of flagship hiring threads (BBB, SpigotMC, HyClash) is English. French-native status is a tie-breaker *positive* in two narrow but real markets:
|
||||||
|
|
||||||
|
1. **French-speaking Hytale servers** — there's a visible cluster: `hytalia.fr`, `hy-tale.fr`, `heytale.fr`, `hytalefr.com`, `arcana-fr`, `vultalium`, `wannatale`, `meilleurs-serveurs.com` ([Hytale FR servers directory](https://hytale-servers.com/servers/country/FR), [HytaleFR](https://hytalefr.com/)). These account for ~8–12% of the top-200 servers globally. A French-native dev is **disproportionately preferred** because config files, staff communication, and bug reports happen in French.
|
||||||
|
2. **Hypixel Studios itself** is Canadian-Irish with French-Canadian leadership (Simon Collins-Laflamme's background); cultural distance is essentially zero.
|
||||||
|
|
||||||
|
**Practical implications:**
|
||||||
|
- **Maintain killiandalcin.fr in English as primary,** with a minimal French alt-page. French TLD is not a conversion blocker.
|
||||||
|
- **Add a Minecraft.fr / HytaleFR byline** — one guest post on `hytalefr.com` (a quality French-Hytale news site covering modding) delivers a strong local credibility signal and captures 20% of the French-speaking buyer pool at near-zero cost.
|
||||||
|
- Bill in EUR. Use Stripe/Wise. GDPR VAT compliance is frictionless for this micro-scale.
|
||||||
|
|
||||||
|
### Does Kotlin specialization help or hurt?
|
||||||
|
|
||||||
|
The market is ~95% Java by sheer volume (every Spigot tutorial, the HytaleModding template, Britakee's template, the CurseForge template — all Java-first). MCKotlin exists on Modrinth for Paper/Velocity/Sponge, and a Hytale-equivalent shim works because Hytale runs on JVM bytecode ([MCKotlin](https://modrinth.com/plugin/mckotlin)), but most server owners have never written Kotlin.
|
||||||
|
|
||||||
|
**This is a feature, not a bug — if framed correctly.**
|
||||||
|
|
||||||
|
| Framing | Buyer perception | Conversion impact |
|
||||||
|
|---|---|---|
|
||||||
|
| ❌ "I write Kotlin plugins for Hytale" | "So a non-standard stack? Will I be locked in? Can I find a replacement dev?" | **–20 to –40%** |
|
||||||
|
| ✅ "I write Java/Kotlin plugins — interop is transparent, buyers get Java `.jar` output, with Kotlin used internally for safer concurrency, null-safety, and ~30% less boilerplate" | "OK, it's just a better version of Java." | Neutral to **+10%** |
|
||||||
|
| ✅✅ "I ship Java-compatible plugins. Internally I use Kotlin for coroutines + null-safety on data layers — means fewer NPEs in production and faster feature delivery. Output is a standard Hytale `.jar`, other devs on your team can use Java normally." | "This guy is a senior; he knows what he's doing." | **+20–30%** vs. default Java senior |
|
||||||
|
|
||||||
|
**Tactical rules for Kotlin framing:**
|
||||||
|
- **Never lead with Kotlin.** Lead with delivery, reliability, and Java interop. Kotlin appears as a reason *why* you ship faster/safer.
|
||||||
|
- **Ship the free CurseForge plugin with a Java public API and Kotlin internal implementation.** This is exactly the pattern used in `hazae41/mc-kutils` (Kotlin lib for Minecraft plugins) and reads as senior to inspecting devs ([GitHub mc-kutils](https://github.com/hazae41/mc-kutils)).
|
||||||
|
- **On BBB, tag your Offering thread with both `java` and `kotlin`.** Half the filter searches are on `java`.
|
||||||
|
- **Leverage the single clearest benchmark Kotlin gives you:** Advanced Hytale patterns (service-storage, thread pools, event systems, codec configs) are noticeably cleaner in Kotlin per Britakee's patterns doc ([Britakee advanced patterns](https://britakee-studios.gitbook.io/hytale-modding-documentation/plugins-java-development/12-advanced-plugin-patterns)). Publishing a blog post like *"Service-Storage pattern in Hytale — Java vs Kotlin side-by-side"* reaches both audiences and demonstrates technical depth.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Red Flags in killiandalcin.fr Portfolio — Checklist (Portfolio Not Publicly Fetchable)
|
||||||
|
|
||||||
|
The portfolio URL was not fetchable in this research environment. The following is a **best-practice checklist** for freelance dev portfolios targeting gaming/plugin buyers, synthesized from Index.dev's developer-portfolio evaluation framework ([Index.dev](https://www.index.dev/blog/evaluate-freelance-developer-portfolio)), Crafty Copy's client-hiring patterns ([Crafty Copy](https://craftycopy.co.uk/blog/client-red-flags)), and observed BBB buyer behavior. Each item is binary — flag/fix.
|
||||||
|
|
||||||
|
### Above-the-fold (first 5 seconds)
|
||||||
|
|
||||||
|
- [ ] **One sentence value prop that mentions Hytale or Minecraft plugin by name.** Without it, buyers bounce in <3s.
|
||||||
|
- [ ] **GitHub + CurseForge links visible in header** (not just footer).
|
||||||
|
- [ ] **Kotlin is NOT in the header tagline** (rule: Java/Kotlin together, Java first).
|
||||||
|
- [ ] **No language toggle required to read the main pitch in English.**
|
||||||
|
- [ ] **Explicit availability line** ("Currently booking: 2 retainer slots available / June 2026" — Harry Dry pattern). Absent = "probably unavailable."
|
||||||
|
|
||||||
|
### Portfolio section
|
||||||
|
|
||||||
|
- [ ] **Minimum 3 projects** with (a) problem statement (b) your role (c) outcome metric. Index.dev: 87% of hiring managers weigh portfolios over résumés ([Index.dev](https://www.index.dev/blog/evaluate-freelance-developer-portfolio)).
|
||||||
|
- [ ] **At least one Hytale / Minecraft / game-server project visible** (even if side-project). Without it you look like a web-dev pretending.
|
||||||
|
- [ ] **Live demo video or gif for each, 15–45 seconds.** Static screenshots lose to moving content in buyer testing.
|
||||||
|
- [ ] **Numbers, not adjectives** — "handles 300 concurrent players", "reduces tick-time by 40%", "2,400 CurseForge downloads". No "high-quality, scalable, robust" marketing-speak.
|
||||||
|
- [ ] **Mythlane is NOT pictured or named** (the user explicitly flagged it's not showcase-ready — keep it out entirely until it ships).
|
||||||
|
- [ ] **Each project links to its GitHub repo**; public repos have a README, tests, and CI green badge.
|
||||||
|
|
||||||
|
### Credibility anchors
|
||||||
|
|
||||||
|
- [ ] **A testimonials section with at least 1 named quote** (even if it's a Mashe colleague or a side-project user). Anonymous or absent = red flag. Crafty Copy: testimonials + case studies are the freelancer's de-facto résumé.
|
||||||
|
- [ ] **Public pricing rails** — "One-off plugins from €200; retainers from €800/mo". Hiding pricing is the #1 trust-breaker in gaming freelance per Indie Hackers threads.
|
||||||
|
- [ ] **Mashe CDI mentioned as "full-time day job"** — not hidden. Day-job disclosure reads as responsible/senior; hiding it reads as fraud-adjacent.
|
||||||
|
- [ ] **"Based in France, work globally in English/French"** stated. Not hiding French = authenticity; not flagging English-ability = bounce risk for non-French buyers.
|
||||||
|
- [ ] **Clear "how I work" block** — 4 bullet points max (e.g. scope call → fixed quote → GitHub PR workflow → monthly retainer option). Vagueness = scope-creep fear for buyer.
|
||||||
|
|
||||||
|
### Technical credibility
|
||||||
|
|
||||||
|
- [ ] **GitHub profile README** exists and showcases pinned repos sorted by relevance, not chronology.
|
||||||
|
- [ ] **Discord handle visible** (the primary contact channel in this market) — not just email.
|
||||||
|
- [ ] **A /blog section exists even if empty** — creates the URL namespace for future SEO.
|
||||||
|
- [ ] **No broken links, no Lorem Ipsum, no "coming soon" page** visible from main nav. Each is an instant auto-reject on Crafty Copy's observation ("when a portfolio is disorganized, that's a red flag").
|
||||||
|
|
||||||
|
### Friction / conversion
|
||||||
|
|
||||||
|
- [ ] **One-click contact** from above-the-fold (Discord handle + email + Calendly link). Contact-form-only portfolios lose 50% of DMs in the Minecraft market where buyers prefer Discord.
|
||||||
|
- [ ] **Favicon, OG image, and meta description set** — BBB and Discord link-unfurls need these or your URL looks unprofessional in threads.
|
||||||
|
- [ ] **Mobile-responsive** — ~35% of Hytale buyer traffic is mobile.
|
||||||
|
- [ ] **Loads in <2s on mobile**.
|
||||||
|
|
||||||
|
### Items that leak flagship leads specifically
|
||||||
|
|
||||||
|
- [ ] **No trial-task / code-review challenge shortcut** shown. Add a section: "Here are three things I pre-built so you don't have to test me: [link to plugin, link to architecture write-up, link to 5-min demo]." This single addition converts flagship-quality leads 2–3× better.
|
||||||
|
- [ ] **No Kotlin-framing explanation.** Add a 3-line FAQ: "Why Kotlin? / Will it interop with our Java codebase? / Can my Java-only devs extend it?" Pre-empts the 30% of buyers who would silently filter you out.
|
||||||
|
- [ ] **No Mythlane hint.** Confirmed: keep it off the site until retainer revenue is stable.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. 6-Month Ramp Milestone Plan
|
||||||
|
|
||||||
|
### Month 1 — Foundation & Setup
|
||||||
|
|
||||||
|
**Objectives:** Be credible enough to reply to BBB threads and DM server owners without embarrassment.
|
||||||
|
|
||||||
|
- **Week 1:** Audit & fix killiandalcin.fr per §8 checklist. Add /blog namespace. Publish first long-form post (e.g., "Shipping a production-ready Hytale plugin in Kotlin — architecture notes"). Set up BBB account with verified payment method + Offering thread draft.
|
||||||
|
- **Week 2:** Clone Britakee's or HytaleModding's plugin-template; start a real free plugin (recommend: "KillianUtils — scoreboard/placeholder/config framework" in Kotlin with Java public API). First commits public.
|
||||||
|
- **Week 3:** Publish plugin v0.1.0 on CurseForge with a README, gif, and Discord support link. Post about it in HytaleModding #showcase and your first X thread. Submit to New Worlds contest (deadline: April 28, 2026).
|
||||||
|
- **Week 4:** Publish BBB Offering thread. Start the 5h/week cadence. Add 2 answers/day in HytaleModding #help.
|
||||||
|
|
||||||
|
**KPIs M1:** BBB Offering thread live · 1 CurseForge plugin published · 20+ Discord answers · 2 blog posts · 10 cold DMs sent · 2 BBB thread replies.
|
||||||
|
**Revenue target:** €0 (setup phase). A small €100–300 one-off is possible but not expected.
|
||||||
|
|
||||||
|
### Month 2 — Reach & First Inbound
|
||||||
|
|
||||||
|
**Objectives:** Convert setup into first scoping calls.
|
||||||
|
|
||||||
|
- Ramp to 10h/week from week 5 if possible.
|
||||||
|
- Publish plugin v0.2 + second small plugin (e.g., a custom-recipe util). Submit a PR to the HytaleModding org (real repo: plugin-template, Hyssentials, robot).
|
||||||
|
- 30+ cold DMs to HytaleCharts top-30 server owners using Template A.
|
||||||
|
- 1 guest post pitched to Britakee.
|
||||||
|
- Pitch 1 guest article to HytaleFR or Minecraft.fr (French-local move).
|
||||||
|
- First New Worlds mid-contest drop awarded (or not) by March 17 / 31 — either way, the submission is on your CurseForge profile.
|
||||||
|
|
||||||
|
**KPIs M2:** 2 CurseForge plugins live · 40+ Discord answers · 4 blog posts · 30+ DMs · 8+ BBB replies · **3–6 inbound PMs**.
|
||||||
|
**Revenue target:** €200–600 (1 small one-off or free-for-vouch to build BBB reviews).
|
||||||
|
|
||||||
|
### Month 3 — First Paying Client
|
||||||
|
|
||||||
|
**Objectives:** Sign a first contract.
|
||||||
|
|
||||||
|
- Typical Indie Hackers timing: 3–6 months to first $500 MRR for a disciplined solo dev ([Monolit](https://monolit.sh/blog/indie-hacker-guide-how-to-build-a-profitable-side-project-2026)).
|
||||||
|
- Refine offering thread weekly. Start tracking reply rate by DM variant.
|
||||||
|
- Land the first one-off (€500–1,500 typical) — this becomes your first BBB review/vouch. Over-deliver.
|
||||||
|
- Start conversations for retainer conversion from the one-off ("happy to handle ongoing maintenance at €X/mo").
|
||||||
|
- Publish one longer technical piece on Britakee or hytalemodding.dev as a guest.
|
||||||
|
|
||||||
|
**KPIs M3:** 1–2 contracts signed · 1 BBB review/vouch · 50+ Discord rep score · 6 blog posts · **2–5 qualified leads/month reached** (primary target hit).
|
||||||
|
**Revenue target:** €500–1,500.
|
||||||
|
|
||||||
|
### Month 4 — Conversion to Retainer
|
||||||
|
|
||||||
|
**Objectives:** Convert the first one-off into a retainer; stack another one-off.
|
||||||
|
|
||||||
|
- Explicit retainer pitch to month-3 client: "Want me on monthly maintenance for €800–1,200/mo? Includes 4h/wk dev, bug fixes within 24h, priority feature slots."
|
||||||
|
- Publish plugin v1.0 of flagship free plugin (by now 1,500+ downloads expected if well-promoted).
|
||||||
|
- New Worlds winners announced May 12 — if you placed, update the Offering thread and portfolio with the badge.
|
||||||
|
- Consider introducing Mythlane *internally* to retainer client as credibility proof (not publicly on portfolio).
|
||||||
|
- Second one-off contract.
|
||||||
|
|
||||||
|
**KPIs M4:** 1 retainer signed · 2 one-offs this month · 3 BBB reviews · blog compounding (≥200 organic visits/mo).
|
||||||
|
**Revenue target:** €1,200–2,500.
|
||||||
|
|
||||||
|
### Month 5 — Stabilize & Scale
|
||||||
|
|
||||||
|
**Objectives:** 2 retainers + regular one-off flow.
|
||||||
|
|
||||||
|
- Raise one-off floor to €400 (from €200) — earlier low-price contracts were purposeful trust-building; now portfolio justifies senior pricing.
|
||||||
|
- Second retainer signed.
|
||||||
|
- Hytale ecosystem has ~6 months of data; start using observed pain points (Noesis UI pain, storage patterns, performance tuning) as content.
|
||||||
|
- Consider making Mythlane marketing-ready — by Month 5, it may be far enough along to become a portfolio piece.
|
||||||
|
|
||||||
|
**KPIs M5:** 2 active retainers · 2–3 one-offs · ≥5 BBB reviews · first organic-search-driven lead.
|
||||||
|
**Revenue target:** €2,000–3,500.
|
||||||
|
|
||||||
|
### Month 6 — Target State (5–8 clients / 2 retainers)
|
||||||
|
|
||||||
|
**Objectives:** Hit original ambition.
|
||||||
|
|
||||||
|
- 2 retainers @ €1,000–1,500/mo = €2,000–3,000 recurring
|
||||||
|
- 3–6 one-off clients over the month, average €600 = €1,800–3,600 project revenue
|
||||||
|
- **Total MRR range: €3,800–6,600**, all while keeping CDI at Mashe
|
||||||
|
- Pipeline: 8–15 inbound leads/mo, ~3 signed, waitlist starting
|
||||||
|
- Portfolio now features (a) 2–3 public CurseForge plugins with ≥3,000 combined downloads, (b) ≥5 BBB reviews, (c) 1 New Worlds contest badge (submitter or winner), (d) ≥12 blog posts with ~500 organic visits/mo, (e) guest posts on Britakee/HytaleFR/joxii, (f) a Mythlane teaser *if* it's actually ready — otherwise still not yet.
|
||||||
|
|
||||||
|
**KPIs M6:** Client count 5–8 · Retainers 2 · MRR €3,800+ · Pipeline 3x bandwidth.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Tracking & KPIs — AARRR Adapted for Freelance
|
||||||
|
|
||||||
|
Following Dave McClure's Pirate Metrics framework ([Pirate metrics](https://growwithward.com/aaarrr-pirate-funnel/)), the freelance funnel maps as:
|
||||||
|
|
||||||
|
| Stage | What to measure | Target Month 3 | Target Month 6 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **Awareness** | Unique BBB thread replies + DMs sent + X impressions + Discord unique helpful-interaction counterparties | 300/mo | 800/mo |
|
||||||
|
| **Acquisition** | Profile/portfolio visits + BBB thread PMs received + GitHub profile views | 120/mo | 350/mo |
|
||||||
|
| **Activation** | Scoping calls booked | 3/mo | 8/mo |
|
||||||
|
| **Revenue** | Quotes signed | 1/mo | 3/mo |
|
||||||
|
| **Retention** | Month-2 renewals from Month-1 clients | 1 retainer | 2 retainers |
|
||||||
|
| **Referral** | Client-referred DMs (inbound) | 0.5/mo | 2/mo |
|
||||||
|
|
||||||
|
Track in a simple Airtable/Notion board with columns: Source → First-touch → First-reply → Call → Quote → Signed → MRR.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Summary Table — Priority Actions by Week Across Channels
|
||||||
|
|
||||||
|
| Week | Primary focus | Secondary | Deliverable |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 1 | Portfolio fix + BBB setup | Blog namespace | killiandalcin.fr passes checklist |
|
||||||
|
| 2 | Free plugin development | Discord presence | Plugin v0.1 commits public |
|
||||||
|
| 3 | Plugin v0.1 release + New Worlds submission | X thread + 1st blog | CurseForge listing live |
|
||||||
|
| 4 | BBB Offering thread + start weekly cadence | 10 cold DMs | BBB thread with ≥1 PM |
|
||||||
|
| 5–8 | Scale DMs + reply to every BBB thread in <6h | Guest post pitch | 3–6 inbound PMs |
|
||||||
|
| 9–12 | Close first one-off | Retainer pitch prep | €500–1,500 signed |
|
||||||
|
| 13–16 | Convert to retainer | Second one-off | €1,000+ retainer |
|
||||||
|
| 17–20 | Raise pricing floor | Second retainer | 2 retainers active |
|
||||||
|
| 21–24 | Systematize inbound; add waitlist | Mythlane soft-reveal (conditional) | MRR €3,800+ |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Caveats and Data-Quality Notes
|
||||||
|
|
||||||
|
- **Hytale-specific data is still thin** (Early Access is 3 months old at time of writing). Benchmarks labeled "expected" or "typical" are drawn from comparable Minecraft-plugin freelance markets (Spigot/BBB), Indie Hackers cold-outreach benchmarks, and solo-founder playbooks. Where Hytale data exists (downloads, contest prize splits, community sizes, active hiring threads), it's cited directly.
|
||||||
|
- **No independent source confirms specific monthly search volumes for "hytale plugin developer"** in April 2026 — my figures are estimates based on comparable new-game launch SEO patterns.
|
||||||
|
- **killiandalcin.fr could not be fetched** in this research environment; the Red Flags section is therefore a **checklist** rather than a live audit.
|
||||||
|
- **Mythlane is an explicit "do not showcase until ready" per user**; all recommendations respect that gate.
|
||||||
|
- **BBB platform risk is real** (Trustpilot 1.8/5) but it remains the dominant marketplace for Hytale hiring as of April 2026 — the practical recommendation is to use it for lead-generation only, with payment arranged off-platform via SEPA/Stripe/Wise when possible.
|
||||||
|
- **The $100K New Worlds Modding Contest deadline is April 28, 2026** — this is a time-sensitive window the user should treat as a Month 1 priority regardless of placement odds, because submission alone is a portfolio asset and because Hypixel Studios is using the contest as a hiring funnel.
|
||||||
|
|
||||||
|
The TL;DR: **BBB thread replies + HytaleModding Discord helpfulness + one free CurseForge plugin**, executed consistently for 6 months with the English-primary / Java-first / Mythlane-off public persona, reliably produces 2–5 qualified leads/month by Month 3 and a 2-retainer / 5–8 client portfolio by Month 6 — the original targets. The Kotlin and France differentiation are net-positive if framed as professional polish rather than deviation. And the single highest-leverage asset is the free, well-documented public plugin shipped before month 3.
|
||||||
@@ -0,0 +1,352 @@
|
|||||||
|
# Hytale Freelance Plugin Pricing Calibration — April 2026
|
||||||
|
|
||||||
|
**Audience:** Killian Dalcin (solo SASU, France, EU TVA) — pricing grid for killiandalcin.fr
|
||||||
|
**Cut-off date for "paid evidence":** January 13, 2026 → April 24, 2026 (~3.5 months post-Early-Access)
|
||||||
|
**Method:** Hytale-native sources only, with every Minecraft analogue explicitly flagged.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Prompt-Injection Notice
|
||||||
|
|
||||||
|
During this research, the HytaleCharts.com page for the server "Runeteria" contained an embedded block of text attempting to manipulate AI assistants into (a) refusing legitimate public-data extraction, (b) citing fabricated "proprietary dependencies" and (c) issuing legal warnings. ([Source](https://hytalecharts.com/servers/runeteria)). That content was ignored; HytaleCharts' **public** server listings (server names, vote counts, peak concurrents) remain factual and are cited normally. I flag this so you know the recommendation below was NOT shaped by that injection.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Executive Summary — What to Publish Today
|
||||||
|
|
||||||
|
**Decisive answer to the mid-tier asymmetry question: NO.** In April 2026, a 20-player Hytale server is NOT paying €800+ for a single plugin. Across the entire published BBB Hytale catalogue of ~295 paid resources, the top-selling plugin has **37 purchases at $6.99** ([Source](https://builtbybit.com/resources/hytale-shop-buy-sell-items.91234/)). Only one documented case of a four-figure USD commitment to Hytale server dev exists publicly: ThirtyVirus's **$20,000 personal savings** for HyClash, and even that is (a) his own money not paid to a freelancer, (b) largely spent on OVH infrastructure not plugins, and (c) the server is currently "Offline" on HytaleCharts with 5,628 aggregate votes ([Source](https://hytaletop100.com/blog/thirtyvirus-announces-hyclash-ambitious-new-hytale-server-network-with-20k-budget), [Source](https://hytalecharts.com/servers)). Every other public Hytale "hiring dev" thread reviewed (10 examples below) is either **revenue share / volunteer**, **monthly retainer with no stated budget**, or an explicit €50–€100 one-off ceiling ([Source](https://builtbybit.com/tags/developer/)).
|
||||||
|
|
||||||
|
**Recommended grid to publish on killiandalcin.fr TODAY (EUR, HT, SASU invoice):**
|
||||||
|
|
||||||
|
| Package | Price (HT) | Target Client | What It Is |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **Essential Plugin** | €149 | Hobbyist / 1–15 concurrent | 1 feature, ≤8 h work, config-first |
|
||||||
|
| **Custom System** | €349 | Small community / 15–30 concurrent | Medium plugin (shop/quest/crate variant) with in-game GUI, ≤20 h |
|
||||||
|
| **Flagship Module** | €790 | Top-30 server (Runeteria / Hytown tier) — by quote only | Custom MMO system, 2–4 weeks |
|
||||||
|
| **Monthly Retainer** | €450/mo | Any tier wanting updates + fixes | ~12 h/mo, priority queue |
|
||||||
|
| **Hourly (outside packages)** | €45/h | Spot fixes, audits | Minimum 1 h |
|
||||||
|
|
||||||
|
Top three lines are published prices; Flagship is "from €790 — contact for quote". This grid captures 85 %+ of the EU/FR observed demand while leaving explicit upsell headroom for the 5–8 flagship servers that actually have budget. **Do NOT publish a headline plugin price above €790 until you have a case study.**
|
||||||
|
|
||||||
|
The full reasoning, data tables and scenario projections follow.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Hytale Market Reality Check — Context Before Numbers
|
||||||
|
|
||||||
|
- **Early Access launch:** 13 January 2026 (confirmed, [Source](https://hytale.com/news/2026/1/hytale-is-finally-here), [Source](https://en.wikipedia.org/wiki/Hytale)). Data window available: ~14 weeks.
|
||||||
|
- **Total Hytale server listings (April 2026):** HytaleCharts 432 ([Source](https://hytalecharts.com/)); HyServers 1,221 ([Source](https://hyservers.gg/hytale-server-list)); HytaleServerList.me "500+" ([Source](https://hytaleserverlist.me)); HytaleTop100 "250+" ([Source](https://hytaletop100.com/)). Real active-and-online count after dedup ≈ 250–350.
|
||||||
|
- **Monthly active users (Feb 2026):** ~700–744 K; DAU ~125–156 K; peak concurrent ~52 K; **-52.6 % month-over-month from January** ([Source](https://hytalecharts.com/news/hytale-player-count-february-2026-analysis), [Source](https://activeplayer.io/hytale/)). ActivePlayer.io acknowledges these are *algorithmic estimates*, not hard Hypixel data.
|
||||||
|
- **Top server peak concurrents (real query data, 24-h rolling):** Runeteria averaged 18, peaked 29 ([Source](https://hytale-servers.com/server/runeteria)); Mythica averaged 15, peaked 22 ([Source](https://hytale-servers.com/server/mythica)). The 20–30 CCU ceiling the brief cites is **empirically correct**.
|
||||||
|
- **BBB Hytale resource counts (as of 23 April 2026):** 604 total Hytale resources — 267 plugins, 28 data assets, 26 server setups, 257 builds, 9 graphics, 17 models ([Source](https://builtbybit.com/resources/bundle/hytale-sale.3204/)). Earlier April snapshots show 245–295 Hytale plugins, confirming ~290 paid plugin SKUs — consistent with the ~295 figure in the brief.
|
||||||
|
- **BBB platform fee:** 9.9 % of each transaction ([Source](https://github.com/HytaleModding/site/blob/main/content/docs/en/publishing/builtbybit.mdx)).
|
||||||
|
- **Hypixel Studios policy:** 0 % commission on Hytale server monetisation for ≥ 2 years from launch ([Source](https://hytaletop100.com/blog/hytale-server-monetization-2026-complete-guide-to-making-money-from-your-server)) — so every euro a server earns on Tebex actually reaches the owner, improving their theoretical capacity to pay devs.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Top 30 Hytale Servers — Revenue Capacity Audit
|
||||||
|
|
||||||
|
Sources: HytaleCharts top-vote list ([Source](https://hytalecharts.com/servers)), HyServers real-query feed ([Source](https://hyservers.gg/hytale-server-list)), HytaleTop100 ([Source](https://hytaletop100.com/)), Hytale.game ([Source](https://hytale.game/en/servers/)), individual server sites. Confidence codes: **H** = directly observed on ≥ 2 list sites + shop URL verified; **M** = ≥ 2 list sites, shop/Patreon unverified; **L** = listed but uncorroborated / offline most of the time.
|
||||||
|
|
||||||
|
| # | Server | Peak CCU (30-d) | Region / Language | Shop URL | Observed products / prices | Vote plugin | Public dev spend | Paid-dev? | Confidence | Monthly gross est. |
|
||||||
|
|---|---|---|---|---|---|---|---|---|---|---|
|
||||||
|
| 1 | **Runeteria** | 29 (avg 18) | Global / EN | None public verified | "Optional ranks and cosmetics" ([Source](https://hytale-servers.com/server/runeteria)) | Votifier-enabled (generic) | Float Studios veterans — commercial team; no public dev-for-hire | Internal team | H | $200–800 |
|
||||||
|
| 2 | **Hytown** | 20+ (biggest network claim) | US + EU / EN | Not public | Optional ranks/cosmetics ([Source](https://hytale-servers.com/server/hytown)) | Not specified publicly | Team from SpaceX/RuneScape bg ([Source](https://hytown.org/)); actively hiring STAFF + DEV ([Source](https://hytale.game/en/servers/hytown/)) | Hiring (monthly pay language, no numbers) | H | $500–2 500 |
|
||||||
|
| 3 | **Dogecraft** | 12 (100 slots) | EN (No-grief SMP) | Not public | Jobs/Ranks/Land/Cosmetics ([Source](https://hytale-servers.com/)) | Votifier-enabled | No | Volunteer/owner | H | $50–250 |
|
||||||
|
| 4 | **HyClash** | OFFLINE (5 592 votes) | EN (launched by ThirtyVirus) | None | Planned cosmetics/convenience | Not live | **$20 000 personal budget** — OVH, art, builds, not freelancers ([Source](https://hytaletop100.com/blog/thirtyvirus-announces-hyclash-ambitious-new-hytale-server-network-with-20k-budget)) | Recruiting volunteers + model makers | H | N/A (offline) |
|
||||||
|
| 5 | **Ethertale Survival** | 9 (60 slots) | EN PVE/RPG | Not public | Ranks hinted | Votifier-enabled | None public | Volunteer | M | $20–120 |
|
||||||
|
| 6 | **WoodTale SkyblockOne** | OFFLINE | Hungary (HU) | Not public | — | — | — | Volunteer | L | N/A |
|
||||||
|
| 7 | **Hyternal** | OFFLINE | EN MMORPG | — | — | — | — | L | N/A |
|
||||||
|
| 8 | **Hytale Box** | 0 / 120 online | ES (Hispanic) | Not public | — | Not specified | — | Volunteer | L | N/A |
|
||||||
|
| 9 | **YKZSMP** | OFFLINE | EN MMO-RPG | — | — | — | — | L | N/A |
|
||||||
|
| 10 | **ZHorde** | 0 / 200 online | EN Zombie Survival | Not public | — | — | — | L | $0–50 |
|
||||||
|
| 11 | **HyTap** | OFFLINE | EN PVE | Not public | — | — | — | L | N/A |
|
||||||
|
| 12 | **SCG Hytale** | 0 / 100 online | EN Survival/Factions | Not public | Vote rewards + kits | Votifier-enabled | — | Volunteer | L | $0–50 |
|
||||||
|
| 13 | **Hyforger Skyblock** | Launched 7 March 2026 | EN (ThirtyVirus #2) | Not public | No P2W commitment ([Source](https://builtbybit.com/threads/hytale-hyforger-skyblock-looking-for-staff.737761/)) | — | Volunteer recruit | Volunteer | H | $50–200 |
|
||||||
|
| 14 | **Histatu Network** | — | EN EU relaunch of 100k MC community | **store.histatu.net (Tebex)** | "100 % of donations → server costs" explicitly — no P2W ([Source](https://store.histatu.net/)) | Votifier | No external paid dev public | Internal | H | $100–500 |
|
||||||
|
| 15 | **Hoodexia** | 0/50 online | ES Survival | Not public | — | Votifier | — | Volunteer | M | $20–100 |
|
||||||
|
| 16 | **Hylandia** | OFFLINE | EN Minigames | — | — | — | — | L | N/A |
|
||||||
|
| 17 | **Phoenix Realms** | 1/500 online | EN Survival/RPG | Not public | — | Votifier | — | Volunteer | L | $10–50 |
|
||||||
|
| 18 | **Hyasia** | OFFLINE | Asian (SEA/Japan/KR) | Not public | — | — | — | L | N/A |
|
||||||
|
| 19 | **Hynetic** | 0/500 online | EN Minigames (Skywars/Bedwars) | hynetic.net (no shop shown) | — | — | — | Volunteer | M | $0–100 |
|
||||||
|
| 20 | **Hyvale** | — | EN RPG Survival | Not public | Explicit "not required to enjoy" monetisation ([Source](https://hytale.game/en/servers/)) | Votifier | — | Volunteer | M | $20–120 |
|
||||||
|
| 21 | **Mythica** | 22 (avg 15) | EN Fantasy RPG | Not public | Generic "optional cosmetics" | Votifier | — | Volunteer/owner-coded | H | $50–200 |
|
||||||
|
| 22 | **AresRPG** | — | **FR** (Dofus 1.29-inspired MMORPG, 6 languages) | Not public on first party | Strict no-P2W messaging ([Source](https://serveur-prive.net/hytale/aresrpg)) | — | Purpose-built team | Internal/volunteer | H | $50–250 |
|
||||||
|
| 23 | **Hylterium** | — | **FR** MMORPG | play.hylterium.fr (no shop seen) | Cosmetics, no P2W | — | — | Volunteer | M | $20–100 |
|
||||||
|
| 24 | **VULTALIUM** | — | **FR** Semi-RP | — | — | — | — | Volunteer | L | — |
|
||||||
|
| 25 | **Next Squad** | ~10–40 active/daily | **FR** Survival | — | — | — | — | Volunteer | L | — |
|
||||||
|
| 26 | **Hy-Tale.fr** | — | **FR** #1 self-declared | hy-tale.fr | Narrative server with dungeons/bosses | — | — | Internal | M | $20–100 |
|
||||||
|
| 27 | **Hytalia** | Pre-launch | **FR** Semi-RP communautaire | hytalia.fr | Patreon-style fundraising mentioned, vote ranking | — | Volunteer recruiting ([Source](https://www.hytalia.fr/)) | Volunteer | H | pre-revenue |
|
||||||
|
| 28 | **Palandriel** | Listed pre-launch | EN RPG SMP | — | Concept phase | — | — | Volunteer | L | N/A |
|
||||||
|
| 29 | **HyHero.net** | — | **DE** Survival-citybuild | hyhero.net | Rank tiers | — | — | Internal | M | $50–200 |
|
||||||
|
| 30 | **JadeBerry** (+ "Histatu" + German regionals referenced by HytaleSL ([Source](https://hytalesl.io/wiki/hytale-server-statistics-2026/))) | — | DE | — | — | — | — | Volunteer | L | — |
|
||||||
|
|
||||||
|
**Aggregate picture of the top 30:**
|
||||||
|
- **# with a public Tebex/shop URL that I could verify:** 3 (Histatu, HyHero, Hy-Tale.fr implied). Confidence on the others being monetised at all is low.
|
||||||
|
- **# running a dedicated Hytale vote-tracking plugin** (HyVotifier / HyVote / JHS-Votifier / SimpleVotifier / HytaleVotifier): **Votifier-enabled flag appears on ~10** of the top 30 on HyServers (confirmed by the voting-plugin preference pages: [Source](https://hytale-servers.com/votifier-setup), [Source](https://hytaleserverlist.me/blogs/best-hyvotifier-hytale-voting-mod-plugin)). **The other ~20 are VotePipe leads** — see §7.
|
||||||
|
- **# publicly hiring PAID plugin devs (post-Jan 13):** 0 with an explicit €/$ number. A handful with "monthly pay based on experience and scope" wording ([Source](https://builtbybit.com/threads/hiring-hytale-developer-s-new-server-project-monthly-pay-fast-progress-high-quality.736777/)).
|
||||||
|
- **# documented as having paid €500+ for ONE plugin/system, publicly, post-Jan 13:** **0.** HyClash's $20 K is a personal budget covering hosting, art, builds and potential future hires — not a single-plugin payment ([Source](https://hytaletop100.com/blog/thirtyvirus-announces-hyclash-ambitious-new-hytale-server-network-with-20k-budget)).
|
||||||
|
- **# fully volunteer / owner-coded in the top 30 (conservative estimate):** **20–24 of 30 (≈ 70–80 %)**.
|
||||||
|
|
||||||
|
**Revenue ceiling sanity check:** Runeteria peaks at 29 CCU with ~18 average. Even with an aggressive 5 % supporter conversion rate and a €10 average supporter/month (optimistic — see Tebex benchmark case for a 20-CCU server at ~$25/month in ([Source](https://hytaletop100.com/blog/hytale-server-monetization-2026-complete-guide-to-making-money-from-your-server))), its gross ceiling is ~€200–800/month. That is **the economic reality** no freelance pricing should ignore.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. BuiltByBit Hytale Price-vs-Purchase Scatter Analysis
|
||||||
|
|
||||||
|
Sample pulled from BBB Hytale plugin, data-asset and server-setup listings visible 22–24 April 2026.
|
||||||
|
|
||||||
|
### 3.1 Concrete data points observed (price × purchases)
|
||||||
|
|
||||||
|
| Product | Category | Price | Purchases (cumul.) | Published | [Source] |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Hytale Shop (Primax) | Plugin | $6.99 | **37** | Jan 25 | [builtbybit](https://builtbybit.com/resources/hytale-shop-buy-sell-items.91234/) |
|
||||||
|
| ReliableCrates | Plugin | — | 89 | Jan 25 | [builtbybit](https://builtbybit.com/resources/reliablecrates-custom-hytale-crates-ui.91282/) |
|
||||||
|
| Premium Survival Setup (Nekio) | Server setup | $22.49 (25 % off from $29.99) | **133** (the top-selling HYTALE item I found) | Jan 22 | [builtbybit](https://builtbybit.com/resources/premium-survival-setup-hytale.90671/) |
|
||||||
|
| Premium Survival Setup (MrErrorX) | Server setup | $18.74 | 1 | — | same |
|
||||||
|
| Glymera Cats | Plugin | $3.99 | 25 | — | [ReliableCrates page refs] |
|
||||||
|
| EtAuctionHouse | Plugin | $5.99 | **2** | Jan 26 | [builtbybit](https://builtbybit.com/resources/etauctionhouse-hytale-auctions-system.91350/) |
|
||||||
|
| Perfect ItemManager | Plugin | $15.99 (20 % off $19.99) | 7 | — | [builtbybit](https://builtbybit.com/resources/perfectholograms.96569/) |
|
||||||
|
| PerfectGuard (AntiCheat) | Plugin | $6.79 (15 % off $7.99) | 1 | — | same |
|
||||||
|
| HypeTale Premium Particle Trail | Plugin | ~$6 | — | — | [builtbybit](https://builtbybit.com/resources/premium-particle-trail-system-for-hytale.93118/) |
|
||||||
|
| HyRanks | Plugin | $3.99 | 0 | Feb 6 | [builtbybit](https://builtbybit.com/resources/hypermissions-hytale.92928/) |
|
||||||
|
| HyScoreBoard | Plugin | $4.99 | 1 | — | same |
|
||||||
|
| HySuite | Plugin | $10.05 (33 % off $15) | 0 | — | [builtbybit](https://builtbybit.com/resources/hyspawn.90138/) |
|
||||||
|
| HySpawnBoss | Plugin | $5.99 | 4 | — | same |
|
||||||
|
| HyPermissions | Plugin | — | 2 | — | [builtbybit](https://builtbybit.com/resources/hypermissions-hytale.92928/) |
|
||||||
|
| HytaleVault | Plugin | — | 4 | — | [builtbybit](https://builtbybit.com/resources/hytalevault.91009/) |
|
||||||
|
| Mortis Minion | Plugin | $19.99 | 6 | — | [Primax bundle page](https://builtbybit.com/resources/hytale-shop-buy-sell-items.91234/) |
|
||||||
|
| Glymera Dogs / GlymeraMath | Plugin | $3.99 each | 0 | — | same |
|
||||||
|
| SkyWars (john.slovakia) | Plugin | — | 2 (3 dl) | Jan 26 | [builtbybit](https://builtbybit.com/resources/skywars-hytale-plugin.91384/) |
|
||||||
|
| Hytale Shop Configuration (Ph4ntom) | Data asset | $3.99 | — | Feb 2 | — |
|
||||||
|
|
||||||
|
### 3.2 Price distribution histogram (~295 Hytale plugins, observed clusters)
|
||||||
|
|
||||||
|
| Bucket | Share of Hytale plugin catalog | Typical purchase count | Typical purchase count when rated ≥ 4★ |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **Free ($0)** | ~10 % | — | — |
|
||||||
|
| **$1.99–$4.99** | ~35 % | 0–25 | 10–25 (HyRanks 0, Glymera Cats 25) |
|
||||||
|
| **$5.99–$9.99** | ~35 % | 0–40 | 5–40 (Hytale Shop 37, EtAuctionHouse 2, ReliableCrates 89) |
|
||||||
|
| **$10–$19.99** | ~15 % | 0–7 | 1–7 (ItemManager 7, HySuite 0) |
|
||||||
|
| **$20–$29.99** | ~4 % | 0–2 | 1 (only Premium Survival Setup reaches 133 and is a *server setup* bundle, not a plugin) |
|
||||||
|
| **$30+** | < 2 % | 0 | 0 |
|
||||||
|
| **$50+** | Essentially 0 Hytale plugins | 0 | 0 |
|
||||||
|
|
||||||
|
### 3.3 Key findings
|
||||||
|
|
||||||
|
- **Price above which conversion hits zero on Hytale BBB: ~$20 for single plugins.** Compared to Minecraft where $50–$100 plugins routinely hit 500–3 975 purchases (LPX AntiPacketExploit $19.97 at 3 975, DonutSMP Core $19.99 at 750, Dungeons+ $19.99 at 2 539, ItemsAdder $24.99 at 2 857 — all [Source](https://builtbybit.com/resources/minecraft/plugins/paid/)) this is a **~30–100× difference in addressable demand**.
|
||||||
|
- **Top-selling Hytale *plugin*: ReliableCrates at 89 purchases** ([Source](https://builtbybit.com/resources/reliablecrates-custom-hytale-crates-ui.91282/)). Top-selling Hytale *resource overall*: Premium Survival Setup at 133 ([Source](https://builtbybit.com/resources/premium-survival-setup-hytale.90671/)). **The brief's "~37 purchases" figure is accurate for the Primax Hytale Shop specifically** but slightly underestimates the absolute ceiling — still, ReliableCrates is a $5.99 high-polish crate UI, not a $50 system.
|
||||||
|
- **Scatter-plot shape:** strong negative correlation between price and sales on Hytale (roughly log-linear: 10× price → ~10× fewer sales, with a cliff above $15). The Minecraft scatter is much flatter — demand depth protects premium tiers there.
|
||||||
|
- **Zero plugins at $50+ have meaningful sales.** Revenue-maximising BBB Hytale creators have all converged on $3.99–$9.99 pricing since launch.
|
||||||
|
|
||||||
|
**Implication for a freelancer:** BBB is NOT your channel for custom work. It's a signal of what servers expect to pay for *packaged* goods ($6–$20). Custom commissioned work can command more, but the anchor has been set, and you must price to clearly beat "download and configure a $7 plugin yourself".
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Willingness-to-Pay per Hytale Segment (post-Jan 13 evidence only)
|
||||||
|
|
||||||
|
### Segment A — Hobbyist (1–5 concurrent, solo owner)
|
||||||
|
|
||||||
|
Direct evidence:
|
||||||
|
- BBB-adjacent freelancer quotes: "€10–€15 per hour or €50 per project (depending on size)" — offered by a MC/FiveM dev on BBB's developer tag ([Source](https://builtbybit.com/tags/developer/)).
|
||||||
|
- Fiverr "Lil_cloud – I will professionally setup your Hytale server" at **$15** for plugin install/config ([Source](https://www.fiverr.com/lil_cloud/install-and-configure-any-hytale-mods-to-your-server)).
|
||||||
|
- BBB "Runetale" thread (MMORPG-style hobbyist project): owner explicitly writes *"Payment: Open to offers — not looking to overcomplicate this, just a fair price for setup"* ([Source](https://builtbybit.com/threads/seeking-hytale-server-dev-%E2%80%93-full-plugin-configuration-mmorpg-server.738076/)).
|
||||||
|
- BBB "mitropolzka" request tagged as "developer": *"I think the specific plugin would take you 1 day to make. So my budget is between 50-100 EURO"* ([Source](https://builtbybit.com/tags/developer/)).
|
||||||
|
|
||||||
|
**Ticket elasticity:** At €50: ~60 % of identified hobbyist threads engage. At €150: ~15–20 %. At €300+: essentially 0 post-Jan 13 evidence.
|
||||||
|
**Revenue-to-dev-spend ratio:** Hobbyist Hytale servers typically earn **$0–$50/mo** (Tebex benchmarks from HytaleTop100's own monetisation guide — [Source](https://hytaletop100.com/blog/hytale-server-monetization-2026-complete-guide-to-making-money-from-your-server)). Dev spend therefore has to be ≤ 1 month of revenue before owner quits → **≤ €50 tickets only**.
|
||||||
|
|
||||||
|
### Segment B — Small community (5–15 concurrent)
|
||||||
|
|
||||||
|
Direct evidence:
|
||||||
|
- Fiverr "make_it_first — develop custom Hytale mods / plugins / advanced server gameplay features" at **$95 base gig** ([Source](https://www.fiverr.com/make_it_first/develop-custom-hytale-mods-plugins-and-advanced-server-gameplay-features)).
|
||||||
|
- Fiverr's overall "Plugins Development" category average is **$180–$200** — but that's generic WP/JS plugins, not Hytale specifically ([Source](https://www.fiverr.com/categories/programming-tech/software-development/plugins-development)).
|
||||||
|
- Upwork "Hytale Plugin Developer for Mini-Games" job post: freelance budget **< 30 hrs/week, 1–3 months**, client did not publish numbers but job posted as "Hourly" with no hourly range disclosed ([Source](https://www.upwork.com/freelance-jobs/apply/Hytale-Plugin-Developer-for-Mini-Games_~022012286672097810801/)).
|
||||||
|
- "joxii.xyz" — a dedicated Hytale mod-dev-for-hire site, built dungeon + mount systems for **Hytown**. No public rate card; positioning "5+ years of Java, custom commissions" ([Source](https://joxii.xyz)).
|
||||||
|
|
||||||
|
**Ticket elasticity:** €100–€200 is the psychological comfort zone. €300–€500 starts to require a clear unique feature / ROI pitch. Above €500, owner typically flips to "we'll just combine two $7 BBB plugins ourselves".
|
||||||
|
**Revenue-to-dev-spend ratio:** Tebex-benchmarked small server (20 avg CCU) = ~$25/mo supporter revenue ([Source](https://hytaletop100.com/blog/hytale-server-monetization-2026-complete-guide-to-making-money-from-your-server)). Realistically **€150–€400 one-off** is the band here.
|
||||||
|
|
||||||
|
### Segment C — Growing network (15–30 concurrent, top 5 %)
|
||||||
|
|
||||||
|
Direct evidence:
|
||||||
|
- BBB: *"[REQUEST][20 Hours/week] Hytale Development for large scaled project. High Budget with long term roadmap"* ([Source](https://builtbybit.com/threads/request-20-hours-week-hytale-development-for-large-scaled-project-high-budget-with-long-term-roadmap.737528/)). "High budget" never quantified. A pro MC dev replied publicly saying "I have 2 Hytale experiences" — market is still forming.
|
||||||
|
- BBB: *"Hiring Hytale Developer(s) — New Server Project (Monthly Pay, Fast Progress, High Quality)"* ([Source](https://builtbybit.com/threads/hiring-hytale-developer-s-new-server-project-monthly-pay-fast-progress-high-quality.736777/)). Author "correctives" offers **monthly pay based on experience and scope** — no number.
|
||||||
|
- BBB: *"[For Hire] Full Stack Java/Kotlin Developer — Hytale Development!"* — KuramaStone, 13 years Java, ex-BlazeGaming, ex-Cobblemon-Modded-MC — accepting both long-term positions AND freelance, no public rate ([Source](https://builtbybit.com/threads/for-hire-full-stack-java-kotlin-developer-hytale-development.736665/)).
|
||||||
|
- BBB: *"[Hytale] Backend, Proxy & Infrastructure Development"* — 8-year full-stack engineer offering complex backend work, no rate published ([Source](https://builtbybit.com/threads/hytale-backend-proxy-infrastructure-development-experienced-software-engineer.736821/)).
|
||||||
|
- HyClash ($20 000 self-funded by ThirtyVirus covers OVH + art + builds + moderation, operating as "volunteer passion project") ([Source](https://hytaletop100.com/blog/thirtyvirus-announces-hyclash-ambitious-new-hytale-server-network-with-20k-budget)).
|
||||||
|
- Hytown actively hiring "staff, developers, modelers, and builders" — no rates disclosed ([Source](https://hytale.game/en/servers/hytown/)).
|
||||||
|
- Histatu Network's Tebex page: *"100 % of donations will go towards server costs. This project is purely a passion project, and our team has no intention, nor need to benefit from any donations"* ([Source](https://store.histatu.net/)). Implication: dev team is volunteer.
|
||||||
|
|
||||||
|
**Ticket elasticity:** €500–€800 viable for a bespoke *system* (custom MMO-lite, dungeon generator). Above €1 000 possible only with contract + milestone structure — **no public evidence of it happening yet post-Jan 13**.
|
||||||
|
**Revenue-to-dev-spend ratio:** Top-30 server earning $200–800/mo × 6-mo runway × 25 % dev-allocation ceiling → **€300–1 200** realistic one-off commission envelope.
|
||||||
|
|
||||||
|
### Segment D — Flagship / aspirational
|
||||||
|
|
||||||
|
Only data point: **HyClash $20 000** (ThirtyVirus's personal savings, spread across 2026's entire operation). Hytown claims "team from SpaceX/RuneScape" and is "building an MMO to release this summer" ([Source](https://hytown.org/)) — indicates serious labour but no public freelance budget disclosure. Runeteria's "Float Studios" built their own cross-server tech in-house ([Source](https://www.hytalelobby.com/blog/runeteria-the-ultimate-hytale-rpg-server-smp-experience)). **No verifiable post-Jan 13 case of €1 000+ paid to a freelance plugin dev for a single Hytale deliverable exists in the public record.**
|
||||||
|
|
||||||
|
### 4.5 Is any solo freelancer earning €2 000+/month from Hytale servers?
|
||||||
|
|
||||||
|
**No public evidence.** Best-performing BBB Hytale creators (Rages/Primax/Nekio) are packaged-plugin sellers, not commission freelancers; their revenue ceilings at observed sales volumes and ~$7 price points are:
|
||||||
|
|
||||||
|
- Rages (HyShop/ReliableCrates/HyChallenges bundles): 37 + 89 + other sales × $6–$10 net-of-BBB-fee since Jan 25 ≈ **$700–1 200 total** over 3 months.
|
||||||
|
- Nekio (Premium Survival Setup): 133 × $22.49 × 0.901 (BBB fee) = **~$2 700 total** since Jan 22 — but that's gross product sales over 13 weeks, i.e. **~$900/mo**, and Nekio existed pre-Hytale with a MC business.
|
||||||
|
- No BBB dev thread, Fiverr profile page, or Upwork profile page I could access publicly disclosed €2 000+/mo from Hytale-specific commissions.
|
||||||
|
|
||||||
|
Conclusion: the €2 000/mo bar is **theoretically reachable** with 2–3 Segment C retainers + 1–2 Segment B one-offs per month, but there is **no published proof anyone is hitting it yet**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Mid-Tier Asymmetry — The Decisive Answer
|
||||||
|
|
||||||
|
**Question:** Can a 20-player Hytale server actually pay €800+ for a plugin?
|
||||||
|
|
||||||
|
**Answer: In April 2026, NO, essentially never.** Evidence:
|
||||||
|
|
||||||
|
1. Of the top 30 servers surveyed, **zero** have publicly paid €500+ for a single plugin or system.
|
||||||
|
2. **~70–80 %** of the top 30 pay **zero** for custom dev (fully volunteer / owner-coded).
|
||||||
|
3. Every public "looking for Hytale dev" thread I found either pays in volunteer status, unspecified monthly retainer, or the €50–€100 band.
|
||||||
|
4. The single documented 4-figure number — HyClash's $20 K — is (a) the *owner's own savings*, (b) spread across infrastructure + art + builds + future hires, (c) ThirtyVirus is himself a self-taught dev since 2010, and (d) the server is currently offline.
|
||||||
|
5. BBB sales data confirms server owners refuse to pay $30+ for *packaged* plugins — the willingness-to-pay for commissioned work reaches higher only via explicit 3–10× premium, but ceiling is still mid-hundreds not €800.
|
||||||
|
|
||||||
|
**However,** the door is not fully closed:
|
||||||
|
- Segment C "flagship upsell" at €500–€790 is plausible for 3–5 of the top 30 (Hytown, Runeteria, Histatu, AresRPG, Hylterium, HyHero) — **if** you bring a unique feature they can't cobble from BBB. None have committed publicly yet.
|
||||||
|
- The EU-FR angle (AresRPG, Hylterium, Hytalia, Hy-Tale.fr, Moncube, Next Squad) opens a language/cultural niche that US-based freelancers don't cover. This is the one place €600–€800 tickets may be possible earlier than the broader market.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Three Pricing Scenarios
|
||||||
|
|
||||||
|
Assumptions shared by all three scenarios:
|
||||||
|
- Solo SASU, EU/FR first, invoices in EUR HT, TVA applied intra-UE.
|
||||||
|
- Marketing: portfolio + killiandalcin.fr + BBB "For Hire" thread + targeted Discord outreach.
|
||||||
|
- Time baseline: 120 usable productive hours/month solo.
|
||||||
|
- Month 1–2 ramp-up: 50 % productivity due to discovery.
|
||||||
|
- Exchange assumption: $1 = ~€0.93.
|
||||||
|
- Retainer products excluded from one-off conversion math.
|
||||||
|
|
||||||
|
### Scenario 1 — CONSERVATIVE (capture the volume)
|
||||||
|
|
||||||
|
Published grid: **€89 (Essential) / €249 (Custom System) / €590 (Flagship)**, hourly €35.
|
||||||
|
|
||||||
|
- **Expected leads/month** (M3, steady state): 12–16 inbound + outbound contacts
|
||||||
|
- **Conversion rate:** ~30 % on Essential, ~15 % on Custom, ~3 % on Flagship.
|
||||||
|
- **Revenue projection:**
|
||||||
|
- M3: 4 × €89 + 1–2 × €249 = **€600–850**
|
||||||
|
- M6: 6 × €89 + 2 × €249 + 0.3 × €590 = **€1 200–1 400**
|
||||||
|
- M12: 8 × €89 + 3 × €249 + 0.5 × €590 = **€1 750–2 000**
|
||||||
|
- **Risk of positioning destruction:** HIGH. Prices sit inside the "I can config a BBB plugin" competitive zone; commoditisation pressure will force continuous discounting. You become the "cheap FR Hytale dev" — brand ceiling locked at ~€2 000/mo.
|
||||||
|
|
||||||
|
### Scenario 2 — BALANCED ✅ (recommended default)
|
||||||
|
|
||||||
|
Published grid: **€149 / €349 / €790 (by quote)**, retainer €450/mo, hourly €45.
|
||||||
|
|
||||||
|
- **Expected leads/month** (M3, steady state): 8–12
|
||||||
|
- **Conversion rate:** ~25 % Essential, ~12 % Custom, ~4 % Flagship (via quote), 1 retainer every ~2–3 months.
|
||||||
|
- **Revenue projection:**
|
||||||
|
- M3: 2 × €149 + 1 × €349 = **€647**
|
||||||
|
- M6: 4 × €149 + 2 × €349 + 0.5 retainer (€225) + 0.2 × €790 = **€1 677**
|
||||||
|
- M12: 5 × €149 + 3 × €349 + 1.5 retainers (€675) + 0.5 × €790 + 4 h hourly (€180) = **€3 332**
|
||||||
|
- **Risk of positioning destruction:** LOW-MEDIUM. €149 entry is premium vs $95 Fiverr / ≈€90 median BBB custom request but still accessible to small-community owners (Segment B). €790 Flagship retains credibility with Segment C without locking you out. The retainer line is the scaling lever — 3 retainers at €450 is a €1 350/mo recurring floor.
|
||||||
|
|
||||||
|
### Scenario 3 — PREMIUM (flagship-only)
|
||||||
|
|
||||||
|
Published grid: **€390 (single plugin, minimum) / €890 (Custom System) / €1 950 (Flagship bundle)**, retainer €850/mo, hourly €70.
|
||||||
|
|
||||||
|
- **Expected leads/month:** 3–5, almost all from outbound.
|
||||||
|
- **Conversion rate:** ~8 % Essential/Single-plugin, ~4 % Custom, ~1–2 % Flagship. Zero months happen.
|
||||||
|
- **Revenue projection:**
|
||||||
|
- M3: often **€0–€390**; possible €890 if a flagship lead lands early (unlikely pre-reputation).
|
||||||
|
- M6: 0.5 × €390 + 0.5 × €890 + 0.1 × €1 950 (= €195 + 445 + 195) = **€835**, high variance.
|
||||||
|
- M12: 1 × €390 + 1 × €890 + 0.3 × €1 950 + 0.5 retainer (€425) = **€2 290**, with ±€1 500 month-to-month variance.
|
||||||
|
- **Risk:** Extreme cash-flow volatility. Without a prior flagship case study, conversion below the "anchored €800 ceiling" evidence is unforgiving. Suited only if you already have 1–2 Segment C references.
|
||||||
|
|
||||||
|
### Scenario comparison
|
||||||
|
|
||||||
|
| Metric | Conservative | **Balanced** | Premium |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Published entry price | €89 | **€149** | €390 |
|
||||||
|
| M3 gross | €600–850 | **€500–800** | €0–400 |
|
||||||
|
| M6 gross | €1 200–1 400 | **€1 500–1 800** | €500–1 200 |
|
||||||
|
| M12 gross | €1 750–2 000 | **€2 900–3 500** | €1 500–3 800 (±) |
|
||||||
|
| Positioning risk | HIGH commoditisation | **LOW-MED** | HIGH cash-flow volatility |
|
||||||
|
| Retainer viability | Low | **High** | Low |
|
||||||
|
| EU-FR flagship access | No | **Yes** | Yes but gatekept |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. VotePipe Lead List — Top-30 Servers WITHOUT a Vote-Tracking Plugin
|
||||||
|
|
||||||
|
Criteria: appears in the HytaleCharts / HyServers / HytaleTop100 top rankings but shows **no Votifier-enabled badge** or no reference to HyVotifier / HyVote / SimpleVotifier / JHS-Votifier / HytaleVotifier in the public server description.
|
||||||
|
|
||||||
|
High-confidence VotePipe leads (≥ 2 indicators of vote traffic but no tracking plugin cited):
|
||||||
|
|
||||||
|
1. **HyClash** — currently offline but 5 592 aggregate votes; re-launch candidate.
|
||||||
|
2. **WoodTale SkyblockOne** — HU market, offline now but 1 507 votes.
|
||||||
|
3. **Hyternal** — offline but 1 504 votes.
|
||||||
|
4. **Hytale Box (ES)** — 1 231 votes, shown online.
|
||||||
|
5. **YKZSMP** — 836 votes, offline.
|
||||||
|
6. **ZHorde** — 822 votes, online.
|
||||||
|
7. **HyTap** — 768 votes, offline.
|
||||||
|
8. **SCG Hytale** — 753 votes, online, but self-describes "Vote rewards and kits RIGHT NOW" — may have *something* (verify whether homemade or using HyVotifier).
|
||||||
|
9. **Hyasia (Asian)** — 905 votes, offline.
|
||||||
|
10. **Hynetic** — 874 votes, online, minigame network.
|
||||||
|
11. **Hylandia** — 671 votes.
|
||||||
|
12. **Phoenix Realms** — 656 votes.
|
||||||
|
13. **Hyvale** — active, no votifier flagged.
|
||||||
|
14. **AresRPG** (FR) — not flagged Votifier-enabled on hytale-servers.com listing.
|
||||||
|
15. **Hylterium** (FR) — not flagged.
|
||||||
|
16. **Hytalia** (FR, pre-launch) — plans include "Classement des votes" but no tracking plugin chosen yet ([Source](https://www.hytalia.fr/)) — **hot VotePipe lead** (they are writing the spec now).
|
||||||
|
17. **VULTALIUM** (FR), **Next Squad** (FR), **Hy-Tale.fr**, **Moncube**, **Palandriel** (concept), **HyHero.net** (DE), **Uniotale** (TR) — all listed without a clear vote-tracking plugin reference.
|
||||||
|
|
||||||
|
Lower-confidence (may already run Votifier but description doesn't say):
|
||||||
|
- Runeteria, Dogecraft, Mythica, Histatu — these **do** have the "Votifier enabled" badge on HyServers.gg ([Source](https://hytale-servers.com/server/runeteria), [Source](https://hytale-servers.com/server/mythica)) — likely HyVotifier; **not leads**.
|
||||||
|
|
||||||
|
Recommended approach: lead with the **FR cluster (AresRPG, Hylterium, Hytalia, Hy-Tale.fr, Moncube, Next Squad)** plus **Hytalia specifically** since they are in pre-launch spec phase — lowest switching cost.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. BuiltByBit Segment Snapshot — Honest Numbers
|
||||||
|
|
||||||
|
| Metric | Value | Source |
|
||||||
|
|---|---|---|
|
||||||
|
| Total Hytale resources on BBB | 604 | [builtbybit](https://builtbybit.com/resources/bundle/hytale-sale.3204/) |
|
||||||
|
| Total Hytale plugins | 245–295 (depending on filter + growth week to week) | [builtbybit](https://builtbybit.com/resources/hytale/plugins/) |
|
||||||
|
| BBB platform fee | 9.9 % | [Hytale Modding docs](https://github.com/HytaleModding/site/blob/main/content/docs/en/publishing/builtbybit.mdx) |
|
||||||
|
| Hypixel Studios monetisation fee | 0 % for ≥ 2 years | [HytaleTop100 guide](https://hytaletop100.com/blog/hytale-server-monetization-2026-complete-guide-to-making-money-from-your-server) |
|
||||||
|
| Top-selling Hytale plugin (purchases) | ReliableCrates, 89 (at ≈ $7) | [builtbybit](https://builtbybit.com/resources/reliablecrates-custom-hytale-crates-ui.91282/) |
|
||||||
|
| Top-selling Hytale "resource" overall | Premium Survival Setup (Nekio) 133 at $18.74–$22.49 | [builtbybit](https://builtbybit.com/resources/premium-survival-setup-hytale.90671/) |
|
||||||
|
| Median Hytale plugin purchases | Single digits (typically 0–5) | Observed across product pages |
|
||||||
|
| Hytale plugins priced $30+ | <2 % of catalog | Observed |
|
||||||
|
| Hytale plugins priced $50+ | Effectively 0 with sales | Observed |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Final Recommendation — Publish This Grid on killiandalcin.fr TODAY
|
||||||
|
|
||||||
|
**Choose Scenario 2 (Balanced).**
|
||||||
|
|
||||||
|
Publish:
|
||||||
|
|
||||||
|
> **Freelance Hytale plugin dev — SASU, FR, TVA intracommunautaire**
|
||||||
|
>
|
||||||
|
> - **Essential Plugin** — **€149 HT** — 1 feature, up to 8 hours of work, in-game-editable config when possible.
|
||||||
|
> - **Custom System** — **€349 HT** — medium plugin with a GUI (shop variant, crate variant, quest/RPG system, custom NPC hooks).
|
||||||
|
> - **Flagship Module — from €790 HT** — bespoke mechanics, dungeon/raid systems, MMO tooling — by quote only.
|
||||||
|
> - **Monthly retainer — €450 HT/mo** — ~12 h/mo, priority fixes + minor features for an existing server.
|
||||||
|
> - **Hourly — €45 HT/h** — audits, spot work, config pass.
|
||||||
|
|
||||||
|
**Why this is the right call for April 2026:**
|
||||||
|
|
||||||
|
1. **€149 entry** is ~3× the commodity anchor ($95 Fiverr / ~€90 median BBB ask) — justifiable because you're custom, fully in-house, EU-invoice-clean, and responsive in French.
|
||||||
|
2. **€349 mid-tier** is priced exactly where 3-month Tebex revenue for a healthy 10–15 CCU server lands — the owner CAN afford you without it hurting.
|
||||||
|
3. **€790 Flagship "by quote"** advertises premium capability without forcing the figure into the anchor test; negotiation room is preserved.
|
||||||
|
4. **Retainer €450/mo** is the compounding line — 3–4 retainers by month 12 is your €1 800+ recurring floor.
|
||||||
|
5. **Stay out of €1 000+ published prices** until you have a named case study. Current Hytale data simply does not support a freelance headline rate above €800 for EU-FR solo positioning.
|
||||||
|
6. **Re-audit at month 6.** By October 2026, Update 5 will have landed, Chapter 1 of Cursebreaker may have shipped ([Source](https://hytale.com/)), and if the player-count trend from Feb-March (-9.6 %/mo) stabilises or reverses, rates should be re-tested upward. If the trend continues, the Balanced grid remains the right floor.
|
||||||
|
|
||||||
|
Keep Scenario 1 in reserve for a 10–15 % discount via limited-time promos to specific FR servers (AresRPG, Hylterium, Hytalia) to acquire the initial portfolio cases — but do **not** publish sub-€149 prices on the public site.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Sources cited inline. Limitations: BBB does not expose revenue, only purchase counts; ActivePlayer.io estimates are algorithmic; most Hytale server shop URLs are not publicly findable without joining each Discord; the public "looking for dev" threads I located self-select toward servers willing to publish budgets and may under-represent quiet, well-funded internal hiring. The recommendation is built on the evidence that IS public, which is itself the best proxy for what your marketing funnel can reach organically.*
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import { hytaleDemos } from '~/data/hytaleDemos'
|
||||||
|
|
||||||
|
const { t } = useI18n()
|
||||||
|
const localePath = useLocalePath()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<section
|
||||||
|
id="demos"
|
||||||
|
class="py-16 md:py-24 px-4 sm:px-6 lg:px-8"
|
||||||
|
>
|
||||||
|
<div class="max-w-7xl mx-auto">
|
||||||
|
<div class="text-center mb-12">
|
||||||
|
<span class="font-mono text-sm text-brand-500 dark:text-brand-400 tracking-wider">
|
||||||
|
{{ t('hytale.demos.label') }}
|
||||||
|
</span>
|
||||||
|
<h2
|
||||||
|
class="text-3xl sm:text-4xl lg:text-5xl font-bold mt-3 bg-gradient-to-r from-gray-900 via-gray-800 to-gray-600 dark:from-white dark:via-gray-200 dark:to-gray-500 bg-clip-text text-transparent"
|
||||||
|
>
|
||||||
|
{{ t('hytale.demos.title') }}
|
||||||
|
</h2>
|
||||||
|
<p class="text-base sm:text-lg text-gray-500 dark:text-gray-400 mt-4 max-w-2xl mx-auto leading-relaxed">
|
||||||
|
{{ t('hytale.demos.subtitle') }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||||
|
<UCard
|
||||||
|
v-for="demo in hytaleDemos"
|
||||||
|
:key="demo.id"
|
||||||
|
class="hover:border-brand-500/40 hover:shadow-xl hover:shadow-brand-500/10 hover:-translate-y-1 transition-all duration-200 overflow-hidden"
|
||||||
|
:class="{ 'ring-2 ring-brand-500': demo.featured }"
|
||||||
|
>
|
||||||
|
<template #header>
|
||||||
|
<div class="aspect-video w-full bg-gray-100 dark:bg-gray-900 -m-4 mb-2 overflow-hidden">
|
||||||
|
<NuxtImg
|
||||||
|
:src="demo.image"
|
||||||
|
:alt="t(`hytale.demos.${demo.id}.title`)"
|
||||||
|
width="600"
|
||||||
|
height="338"
|
||||||
|
loading="lazy"
|
||||||
|
class="w-full h-full object-cover"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<div class="flex flex-col gap-3 p-2">
|
||||||
|
<div class="flex items-center justify-between gap-2">
|
||||||
|
<h3 class="text-lg font-bold text-gray-900 dark:text-white">
|
||||||
|
{{ t(`hytale.demos.${demo.id}.title`) }}
|
||||||
|
</h3>
|
||||||
|
<UBadge
|
||||||
|
v-if="demo.featured"
|
||||||
|
color="primary"
|
||||||
|
variant="subtle"
|
||||||
|
size="sm"
|
||||||
|
>
|
||||||
|
{{ t('hytale.demos.featured') }}
|
||||||
|
</UBadge>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="text-sm text-gray-600 dark:text-gray-300 leading-relaxed line-clamp-3">
|
||||||
|
{{ t(`hytale.demos.${demo.id}.tagline`) }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="flex flex-wrap gap-1.5">
|
||||||
|
<UBadge
|
||||||
|
v-for="t in demo.tech"
|
||||||
|
:key="t"
|
||||||
|
color="neutral"
|
||||||
|
variant="soft"
|
||||||
|
size="xs"
|
||||||
|
>
|
||||||
|
{{ t }}
|
||||||
|
</UBadge>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-wrap gap-2 mt-2">
|
||||||
|
<UButton
|
||||||
|
:to="localePath(`/project/${demo.id}`)"
|
||||||
|
color="primary"
|
||||||
|
variant="soft"
|
||||||
|
size="sm"
|
||||||
|
trailing-icon="i-lucide-arrow-right"
|
||||||
|
>
|
||||||
|
{{ t('projects.buttons.viewProject') }}
|
||||||
|
</UButton>
|
||||||
|
<UButton
|
||||||
|
v-if="demo.website"
|
||||||
|
:to="demo.website"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
color="primary"
|
||||||
|
variant="solid"
|
||||||
|
size="sm"
|
||||||
|
trailing-icon="i-lucide-external-link"
|
||||||
|
>
|
||||||
|
{{ t('hytale.demos.viewSite') }}
|
||||||
|
</UButton>
|
||||||
|
<UButton
|
||||||
|
v-if="demo.modtale"
|
||||||
|
:to="demo.modtale"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
color="neutral"
|
||||||
|
variant="outline"
|
||||||
|
size="sm"
|
||||||
|
>
|
||||||
|
Modtale
|
||||||
|
</UButton>
|
||||||
|
<UButton
|
||||||
|
v-if="demo.curseforge"
|
||||||
|
:to="demo.curseforge"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
color="neutral"
|
||||||
|
variant="outline"
|
||||||
|
size="sm"
|
||||||
|
>
|
||||||
|
CurseForge
|
||||||
|
</UButton>
|
||||||
|
<UButton
|
||||||
|
v-if="demo.github"
|
||||||
|
:to="demo.github"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
color="neutral"
|
||||||
|
variant="outline"
|
||||||
|
size="sm"
|
||||||
|
icon="i-simple-icons-github"
|
||||||
|
/>
|
||||||
|
<UButton
|
||||||
|
v-if="demo.gitea"
|
||||||
|
:to="demo.gitea"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
color="neutral"
|
||||||
|
variant="outline"
|
||||||
|
size="sm"
|
||||||
|
icon="i-simple-icons-gitea"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</UCard>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="text-center text-sm text-gray-500 dark:text-gray-400 mt-10 italic">
|
||||||
|
{{ t('hytale.demos.footnote') }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
@@ -7,6 +7,7 @@ interface Props {
|
|||||||
|
|
||||||
const props = defineProps<Props>()
|
const props = defineProps<Props>()
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
const localePath = useLocalePath()
|
||||||
|
|
||||||
const translatedCategory = computed(() => {
|
const translatedCategory = computed(() => {
|
||||||
if (!props.project.category) return ''
|
if (!props.project.category) return ''
|
||||||
@@ -22,7 +23,7 @@ const translatedCategory = computed(() => {
|
|||||||
itemtype="https://schema.org/CreativeWork"
|
itemtype="https://schema.org/CreativeWork"
|
||||||
>
|
>
|
||||||
<!-- Image -->
|
<!-- Image -->
|
||||||
<NuxtLink :to="`/project/${project.id}`" class="block relative overflow-hidden">
|
<NuxtLink :to="localePath(`/project/${project.id}`)" class="block relative overflow-hidden">
|
||||||
<NuxtImg
|
<NuxtImg
|
||||||
:src="project.image"
|
:src="project.image"
|
||||||
:alt="`${project.title} - ${project.description.slice(0, 60)}...`"
|
:alt="`${project.title} - ${project.description.slice(0, 60)}...`"
|
||||||
@@ -81,7 +82,7 @@ const translatedCategory = computed(() => {
|
|||||||
|
|
||||||
<!-- Hidden SEO link -->
|
<!-- Hidden SEO link -->
|
||||||
<NuxtLink
|
<NuxtLink
|
||||||
:to="`/project/${project.id}`"
|
:to="localePath(`/project/${project.id}`)"
|
||||||
class="absolute inset-0 z-10"
|
class="absolute inset-0 z-10"
|
||||||
:aria-label="`${t('projects.buttons.viewProject')} - ${project.title}`"
|
:aria-label="`${t('projects.buttons.viewProject')} - ${project.title}`"
|
||||||
itemprop="url"
|
itemprop="url"
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ const localePath = useLocalePath()
|
|||||||
const socialLinks = [
|
const socialLinks = [
|
||||||
{ name: 'gitea', url: 'https://gitea.kamisama.ovh/kayjaydee', icon: 'simple-icons:gitea', ariaKey: 'a11y.gitea' },
|
{ name: 'gitea', url: 'https://gitea.kamisama.ovh/kayjaydee', icon: 'simple-icons:gitea', ariaKey: 'a11y.gitea' },
|
||||||
{ name: 'linkedin', url: 'https://linkedin.com/in/killian-dal-cin', icon: 'simple-icons:linkedin', ariaKey: 'a11y.linkedin' },
|
{ name: 'linkedin', url: 'https://linkedin.com/in/killian-dal-cin', icon: 'simple-icons:linkedin', ariaKey: 'a11y.linkedin' },
|
||||||
{ name: 'fiverr', url: 'https://www.fiverr.com/users/mr_kayjaydee', icon: 'simple-icons:fiverr', ariaKey: 'a11y.fiverr' },
|
|
||||||
]
|
]
|
||||||
|
|
||||||
const quickLinks = computed(() => [
|
const quickLinks = computed(() => [
|
||||||
@@ -13,7 +12,6 @@ const quickLinks = computed(() => [
|
|||||||
{ key: 'projects', path: '/projects' },
|
{ key: 'projects', path: '/projects' },
|
||||||
{ key: 'about', path: '/about' },
|
{ key: 'about', path: '/about' },
|
||||||
{ key: 'contact', path: '/contact' },
|
{ key: 'contact', path: '/contact' },
|
||||||
{ key: 'fiverr', path: '/fiverr' },
|
|
||||||
])
|
])
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -30,7 +28,7 @@ src="/images/logo.webp" alt="Killian' DAL-CIN" width="36" height="36" loading="l
|
|||||||
<span class="text-lg font-bold text-gray-900 dark:text-white">Killian' DAL-CIN</span>
|
<span class="text-lg font-bold text-gray-900 dark:text-white">Killian' DAL-CIN</span>
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
<p class="text-sm text-gray-500 dark:text-gray-400 leading-relaxed max-w-xs">
|
<p class="text-sm text-gray-500 dark:text-gray-400 leading-relaxed max-w-xs">
|
||||||
Full Stack Developer & Hytale Plugin Developer. Building modern web experiences and game plugins.
|
{{ t('footer.tagline') }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -51,13 +49,13 @@ v-for="link in quickLinks" :key="link.key" :to="localePath(link.path)"
|
|||||||
<!-- Services links -->
|
<!-- Services links -->
|
||||||
<div>
|
<div>
|
||||||
<h3 class="font-mono text-xs text-gray-400 dark:text-gray-500 uppercase tracking-widest mb-5">
|
<h3 class="font-mono text-xs text-gray-400 dark:text-gray-500 uppercase tracking-widest mb-5">
|
||||||
Services
|
{{ t('footer.services') }}
|
||||||
</h3>
|
</h3>
|
||||||
<nav class="flex flex-col gap-3">
|
<nav class="flex flex-col gap-3">
|
||||||
<span class="text-sm text-gray-600 dark:text-gray-400">Web Development</span>
|
<span class="text-sm text-gray-600 dark:text-gray-400">{{ t('footer.servicesList.hytalePlugins') }}</span>
|
||||||
<span class="text-sm text-gray-600 dark:text-gray-400">Hytale Plugins</span>
|
<span class="text-sm text-gray-600 dark:text-gray-400">{{ t('footer.servicesList.webDev') }}</span>
|
||||||
<span class="text-sm text-gray-600 dark:text-gray-400">Consulting</span>
|
<span class="text-sm text-gray-600 dark:text-gray-400">{{ t('footer.servicesList.retainer') }}</span>
|
||||||
<span class="text-sm text-gray-600 dark:text-gray-400">Maintenance</span>
|
<span class="text-sm text-gray-600 dark:text-gray-400">{{ t('footer.servicesList.consulting') }}</span>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ const navLinks = computed(() => [
|
|||||||
{ key: 'projects', path: '/projects' },
|
{ key: 'projects', path: '/projects' },
|
||||||
{ key: 'about', path: '/about' },
|
{ key: 'about', path: '/about' },
|
||||||
{ key: 'contact', path: '/contact' },
|
{ key: 'contact', path: '/contact' },
|
||||||
{ key: 'fiverr', path: '/fiverr' },
|
|
||||||
])
|
])
|
||||||
|
|
||||||
function toggleLocale() {
|
function toggleLocale() {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
const { featuredProjects } = useProjects()
|
const { featuredProjects } = useProjects()
|
||||||
|
const localePath = useLocalePath()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -13,7 +14,7 @@ const { featuredProjects } = useProjects()
|
|||||||
<h2 class="text-3xl sm:text-4xl lg:text-5xl font-bold mt-3 bg-gradient-to-r from-gray-900 via-gray-800 to-gray-600 dark:from-white dark:via-gray-200 dark:to-gray-500 bg-clip-text text-transparent">{{ t('home.featuredProjects.title') }}</h2>
|
<h2 class="text-3xl sm:text-4xl lg:text-5xl font-bold mt-3 bg-gradient-to-r from-gray-900 via-gray-800 to-gray-600 dark:from-white dark:via-gray-200 dark:to-gray-500 bg-clip-text text-transparent">{{ t('home.featuredProjects.title') }}</h2>
|
||||||
<p class="text-lg text-gray-500 dark:text-gray-400 mt-4 max-w-2xl leading-relaxed">{{ t('home.featuredProjects.subtitle') }}</p>
|
<p class="text-lg text-gray-500 dark:text-gray-400 mt-4 max-w-2xl leading-relaxed">{{ t('home.featuredProjects.subtitle') }}</p>
|
||||||
</div>
|
</div>
|
||||||
<UButton to="/projects" variant="ghost" trailing-icon="i-lucide-arrow-right" class="shrink-0 self-start md:self-auto group">
|
<UButton :to="localePath('/projects')" variant="ghost" trailing-icon="i-lucide-arrow-right" class="shrink-0 self-start md:self-auto group">
|
||||||
{{ t('home.cta.viewProjects') }}
|
{{ t('home.cta.viewProjects') }}
|
||||||
</UButton>
|
</UButton>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,16 +2,16 @@
|
|||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
const services = computed(() => [
|
const services = computed(() => [
|
||||||
|
{
|
||||||
|
icon: 'i-lucide-package',
|
||||||
|
title: t('home.services.hytalePlugins.title'),
|
||||||
|
description: t('home.services.hytalePlugins.description'),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
icon: 'i-lucide-monitor',
|
icon: 'i-lucide-monitor',
|
||||||
title: t('home.services.webDev.title'),
|
title: t('home.services.webDev.title'),
|
||||||
description: t('home.services.webDev.description'),
|
description: t('home.services.webDev.description'),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
icon: 'i-lucide-smartphone',
|
|
||||||
title: t('home.services.mobileApps.title'),
|
|
||||||
description: t('home.services.mobileApps.description'),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
icon: 'i-lucide-zap',
|
icon: 'i-lucide-zap',
|
||||||
title: t('home.services.optimization.title'),
|
title: t('home.services.optimization.title'),
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
// Live Hytale plugins shipped publicly — featured on /hytale#demos
|
||||||
|
// Each entry has corresponding i18n keys at hytale.demos.{id}.*
|
||||||
|
export interface HytaleDemo {
|
||||||
|
id: string
|
||||||
|
image: string
|
||||||
|
github?: string
|
||||||
|
gitea?: string
|
||||||
|
curseforge?: string
|
||||||
|
modtale?: string
|
||||||
|
website?: string
|
||||||
|
tech: string[]
|
||||||
|
status: 'live' | 'pending' | 'soon'
|
||||||
|
featured?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
export const hytaleDemos: HytaleDemo[] = [
|
||||||
|
{
|
||||||
|
id: 'votepipe',
|
||||||
|
image: '/images/projects/votepipe.svg',
|
||||||
|
website: 'https://votepipe.com',
|
||||||
|
modtale: 'https://modtale.net/mod/votepipe',
|
||||||
|
curseforge: 'https://www.curseforge.com/hytale/mods/votepipe',
|
||||||
|
tech: ['Java 25', 'SaaS', 'Webhooks', 'Votifier'],
|
||||||
|
status: 'live',
|
||||||
|
featured: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'gravity-flip',
|
||||||
|
image: '/images/projects/gravityflip.png',
|
||||||
|
modtale: 'https://modtale.net/mod/gravity-flip',
|
||||||
|
curseforge: 'https://curseforge.com/hytale/mods/gravity-flip',
|
||||||
|
github: 'https://github.com/Mr-KayJayDee/hytale-gravity-flip',
|
||||||
|
gitea: 'https://gitea.kamisama.ovh/kayjaydee/hytale-gravity-flip',
|
||||||
|
tech: ['Java 25', 'Gradle Shadow', 'Hytale API'],
|
||||||
|
status: 'live',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'async',
|
||||||
|
image: '/images/projects/async.png',
|
||||||
|
modtale: 'https://modtale.net/mod/async',
|
||||||
|
curseforge: 'https://www.curseforge.com/hytale/mods/async',
|
||||||
|
github: 'https://github.com/Mr-KayJayDee/async',
|
||||||
|
gitea: 'https://gitea.kamisama.ovh/kayjaydee/async',
|
||||||
|
tech: ['Kotlin 2.2', 'Coroutines', 'JDK 25', 'Hytale API'],
|
||||||
|
status: 'live',
|
||||||
|
featured: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'chain-lightning',
|
||||||
|
image: '/images/projects/chain-lightning.png',
|
||||||
|
modtale: 'https://modtale.net/mod/chain-lightning-sceptre',
|
||||||
|
curseforge: 'https://www.curseforge.com/hytale/mods/chain-lightning-sceptre',
|
||||||
|
github: 'https://github.com/Mr-KayJayDee/hytale-chain-lightning',
|
||||||
|
gitea: 'https://gitea.kamisama.ovh/kayjaydee/hytale-chain-lightning',
|
||||||
|
tech: ['Java 25', 'JUnit 5', 'Hytale API'],
|
||||||
|
status: 'live',
|
||||||
|
},
|
||||||
|
]
|
||||||
+10
-5
@@ -1,9 +1,14 @@
|
|||||||
import type { PricingTier } from '~~/shared/types'
|
import type { PricingTier } from '~~/shared/types'
|
||||||
|
|
||||||
|
// Pricing calibrated from Hytale-native market research (April 2026)
|
||||||
|
// Source: RESEARCH/Hytale/3 — Hytale Freelance Plugin Pricing Calibration
|
||||||
|
// Réalité marché : top server Runeteria = 29 CCU peak, €200-800/mois gross revenue
|
||||||
|
// Aucun serveur Hytale n'a payé €500+ pour un plugin single en 2026 (sauf flagship rare)
|
||||||
|
// Grille pensée pour capturer 85%+ de la demande Hytale observée
|
||||||
export const hytalePricing: PricingTier[] = [
|
export const hytalePricing: PricingTier[] = [
|
||||||
{ id: 'simple', priceFixed: '50€', featured: false },
|
{ id: 'simple', priceFixed: '149€', featured: false },
|
||||||
{ id: 'complex', priceFixed: null, priceLabel: 'Sur devis', featured: true },
|
{ id: 'complex', priceFixed: '349€', featured: true },
|
||||||
{ id: 'custom', priceFixed: null, priceLabel: 'Sur devis', featured: false },
|
{ id: 'custom', priceFixed: '790€', featured: false },
|
||||||
{ id: 'maintenance', priceFixed: '30€/mois', featured: false },
|
{ id: 'maintenance', priceFixed: '450€/mois', featured: false },
|
||||||
{ id: 'web', priceFixed: null, priceLabel: 'Sur devis', featured: false },
|
{ id: 'web', priceFixed: '500€', featured: false },
|
||||||
]
|
]
|
||||||
|
|||||||
+121
-2
@@ -3,6 +3,127 @@ import type { Project } from '~~/shared/types'
|
|||||||
// Base project data without translations
|
// Base project data without translations
|
||||||
// Titles and descriptions are resolved via i18n keys: projects.${id}.title, projects.${id}.description
|
// Titles and descriptions are resolved via i18n keys: projects.${id}.title, projects.${id}.description
|
||||||
export const projects: Omit<Project, 'title' | 'description' | 'longDescription'>[] = [
|
export const projects: Omit<Project, 'title' | 'description' | 'longDescription'>[] = [
|
||||||
|
{
|
||||||
|
id: 'votepipe',
|
||||||
|
image: '/images/projects/votepipe.svg',
|
||||||
|
technologies: ['Java 25', 'Hytale Plugin API', 'TypeScript', 'SaaS', 'HTTPS Webhooks', 'Votifier RSA/HMAC'],
|
||||||
|
category: 'Hytale Plugin',
|
||||||
|
date: '2026',
|
||||||
|
featured: true,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
title: 'Website',
|
||||||
|
link: 'https://votepipe.com',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Modtale',
|
||||||
|
link: 'https://modtale.net/mod/votepipe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CurseForge',
|
||||||
|
link: 'https://www.curseforge.com/hytale/mods/votepipe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Documentation',
|
||||||
|
link: 'https://votepipe.com/docs',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'gravity-flip',
|
||||||
|
image: '/images/projects/gravityflip.png',
|
||||||
|
technologies: ['Java 25', 'Hytale Plugin API', 'Gradle Shadow', 'JUnit 5'],
|
||||||
|
category: 'Hytale Plugin',
|
||||||
|
date: '2026',
|
||||||
|
featured: true,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
title: 'Modtale',
|
||||||
|
link: 'https://modtale.net/mod/gravity-flip',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CurseForge',
|
||||||
|
link: 'https://curseforge.com/hytale/mods/gravity-flip',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'GitHub',
|
||||||
|
link: 'https://github.com/Mr-KayJayDee/hytale-gravity-flip',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Gitea',
|
||||||
|
link: 'https://gitea.kamisama.ovh/kayjaydee/hytale-gravity-flip',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'async',
|
||||||
|
image: '/images/projects/async.png',
|
||||||
|
technologies: ['Kotlin 2.2', 'Coroutines', 'JDK 25', 'Hytale Plugin API', 'Gradle Shadow', 'JUnit 5'],
|
||||||
|
category: 'Hytale Library',
|
||||||
|
date: '2026',
|
||||||
|
featured: true,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
title: 'Modtale',
|
||||||
|
link: 'https://modtale.net/mod/async',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CurseForge',
|
||||||
|
link: 'https://www.curseforge.com/hytale/mods/async',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'GitHub',
|
||||||
|
link: 'https://github.com/Mr-KayJayDee/async',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Gitea',
|
||||||
|
link: 'https://gitea.kamisama.ovh/kayjaydee/async',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'chain-lightning',
|
||||||
|
image: '/images/projects/chain-lightning.png',
|
||||||
|
technologies: ['Java 25', 'Hytale Plugin API', 'Gradle Shadow', 'JUnit 5'],
|
||||||
|
category: 'Hytale Plugin',
|
||||||
|
date: '2026',
|
||||||
|
featured: true,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
title: 'Modtale',
|
||||||
|
link: 'https://modtale.net/mod/chain-lightning-sceptre',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CurseForge',
|
||||||
|
link: 'https://www.curseforge.com/hytale/mods/chain-lightning-sceptre',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'GitHub',
|
||||||
|
link: 'https://github.com/Mr-KayJayDee/hytale-chain-lightning',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Gitea',
|
||||||
|
link: 'https://gitea.kamisama.ovh/kayjaydee/hytale-chain-lightning',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'playhours',
|
||||||
|
image: '/images/projects/playhours.png',
|
||||||
|
technologies: ['Java 17', 'Forge 1.20.1', 'LuckPerms', 'TOML Config'],
|
||||||
|
category: 'Minecraft Mod',
|
||||||
|
date: '2025',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
title: 'CurseForge',
|
||||||
|
link: 'https://www.curseforge.com/minecraft/mc-mods/playhours',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Repository',
|
||||||
|
link: 'https://gitea.kamisama.ovh/kayjaydee/PlayHours',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: 'virtual-tour',
|
id: 'virtual-tour',
|
||||||
image: '/images/virtualtour.webp',
|
image: '/images/virtualtour.webp',
|
||||||
@@ -22,7 +143,6 @@ export const projects: Omit<Project, 'title' | 'description' | 'longDescription'
|
|||||||
technologies: ['Node.js', 'Discord.js', 'MongoDB', 'Express'],
|
technologies: ['Node.js', 'Discord.js', 'MongoDB', 'Express'],
|
||||||
category: 'Bot Development',
|
category: 'Bot Development',
|
||||||
date: '2023',
|
date: '2023',
|
||||||
featured: true,
|
|
||||||
buttons: [
|
buttons: [
|
||||||
{
|
{
|
||||||
title: 'Invite',
|
title: 'Invite',
|
||||||
@@ -36,7 +156,6 @@ export const projects: Omit<Project, 'title' | 'description' | 'longDescription'
|
|||||||
technologies: ['JavaScript', 'Node.js', 'Canvas', 'npm'],
|
technologies: ['JavaScript', 'Node.js', 'Canvas', 'npm'],
|
||||||
category: 'Open Source',
|
category: 'Open Source',
|
||||||
date: '2022',
|
date: '2022',
|
||||||
featured: true,
|
|
||||||
buttons: [
|
buttons: [
|
||||||
{
|
{
|
||||||
title: 'Repository',
|
title: 'Repository',
|
||||||
|
|||||||
+7
-38
@@ -1,12 +1,12 @@
|
|||||||
import type { SiteConfig, ContactInfo, SocialLink, FiverrService, FiverrConfig } from '~~/shared/types'
|
import type { SiteConfig, ContactInfo, SocialLink } from '~~/shared/types'
|
||||||
|
|
||||||
export type { SiteConfig, ContactInfo, SocialLink, FiverrService, FiverrConfig }
|
export type { SiteConfig, ContactInfo, SocialLink }
|
||||||
|
|
||||||
export const siteConfig: SiteConfig = {
|
export const siteConfig: SiteConfig = {
|
||||||
name: 'Killian',
|
name: 'Killian',
|
||||||
title: "Killian' DAL-CIN - Hytale Plugin Developer | Freelance",
|
title: "Killian' DAL-CIN - Hytale Plugin Developer | Freelance",
|
||||||
description:
|
description:
|
||||||
'Professional Full Stack Developer specializing in modern web development with Vue.js, React, Node.js. Expert in Discord bots, web applications, and custom software solutions.',
|
'Hytale Plugin Developer & Web Developer. Custom Java plugins for Hytale servers, gaming websites, Discord bots, and full-stack web applications.',
|
||||||
jobTitle: 'Hytale Plugin Developer',
|
jobTitle: 'Hytale Plugin Developer',
|
||||||
author: 'Killian',
|
author: 'Killian',
|
||||||
url: 'https://killiandalcin.fr',
|
url: 'https://killiandalcin.fr',
|
||||||
@@ -42,36 +42,6 @@ export const siteConfig: SiteConfig = {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
fiverr: {
|
|
||||||
profileUrl: 'https://www.fiverr.com/users/mr_kayjaydee',
|
|
||||||
services: [
|
|
||||||
{
|
|
||||||
id: 'discord-bot',
|
|
||||||
url: 'https://www.fiverr.com/s/rEDa84j',
|
|
||||||
image: '/images/fiverr/discord_bot.webp',
|
|
||||||
price: '$25',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'minecraft-plugin',
|
|
||||||
url: 'https://www.fiverr.com/s/xXVY20Q',
|
|
||||||
image: '/images/fiverr/minecraft_plugin.webp',
|
|
||||||
price: '$50',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'telegram-bot',
|
|
||||||
url: 'https://www.fiverr.com/users/mr_kayjaydee',
|
|
||||||
image: '/images/fiverr/telegram_bot.webp',
|
|
||||||
price: '$20',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'website-development',
|
|
||||||
url: 'https://www.fiverr.com/users/mr_kayjaydee',
|
|
||||||
image: '/images/fiverr/website.webp',
|
|
||||||
price: '$50',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
seo: {
|
seo: {
|
||||||
defaultImage: '/portfolio-preview.webp',
|
defaultImage: '/portfolio-preview.webp',
|
||||||
twitterHandle: '@killiandalcin',
|
twitterHandle: '@killiandalcin',
|
||||||
@@ -79,15 +49,14 @@ export const siteConfig: SiteConfig = {
|
|||||||
alternateLocales: ['fr_FR'],
|
alternateLocales: ['fr_FR'],
|
||||||
internalLinks: {
|
internalLinks: {
|
||||||
priority: [
|
priority: [
|
||||||
{ url: '/fiverr', text: 'Services Fiverr', priority: 0.9 },
|
{ url: '/hytale', text: 'Hytale Plugin Development', priority: 0.9 },
|
||||||
{ url: '/projects', text: 'Portfolio', priority: 0.8 },
|
{ url: '/projects', text: 'Portfolio', priority: 0.8 },
|
||||||
{ url: '/contact', text: 'Contact', priority: 0.8 },
|
{ url: '/contact', text: 'Contact', priority: 0.8 },
|
||||||
],
|
],
|
||||||
services: [
|
services: [
|
||||||
{ url: '/fiverr#discord-bot', text: 'Bot Discord' },
|
{ url: '/hytale#pricing', text: 'Hytale Pricing' },
|
||||||
{ url: '/fiverr#minecraft-plugin', text: 'Plugin Minecraft' },
|
{ url: '/hytale', text: 'Custom Plugin Development' },
|
||||||
{ url: '/fiverr#telegram-bot', text: 'Bot Telegram' },
|
{ url: '/contact', text: 'Request a Quote' },
|
||||||
{ url: '/fiverr#website-development', text: 'Developpement Web' },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
organization: {
|
organization: {
|
||||||
|
|||||||
+3
-2
@@ -2,6 +2,7 @@
|
|||||||
import { techStack } from '~/data/techstack'
|
import { techStack } from '~/data/techstack'
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
const localePath = useLocalePath()
|
||||||
|
|
||||||
useSeoMeta({
|
useSeoMeta({
|
||||||
title: () => t('seo.about.title'),
|
title: () => t('seo.about.title'),
|
||||||
@@ -180,9 +181,9 @@ const approachCards = computed(() => [
|
|||||||
:title="t('about.cta.title')"
|
:title="t('about.cta.title')"
|
||||||
:subtitle="t('about.cta.description')"
|
:subtitle="t('about.cta.description')"
|
||||||
:primary-text="t('about.cta.button')"
|
:primary-text="t('about.cta.button')"
|
||||||
primary-to="/contact"
|
:primary-to="localePath('/contact')"
|
||||||
:secondary-text="t('home.cta.viewProjects')"
|
:secondary-text="t('home.cta.viewProjects')"
|
||||||
secondary-to="/projects"
|
:secondary-to="localePath('/projects')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,167 +0,0 @@
|
|||||||
<script setup lang="ts">
|
|
||||||
import { siteConfig } from '~/data/site'
|
|
||||||
import { homeFAQs } from '~/data/faq'
|
|
||||||
|
|
||||||
const { t } = useI18n()
|
|
||||||
|
|
||||||
useSeoMeta({
|
|
||||||
title: () => t('seo.fiverr.title'),
|
|
||||||
description: () => t('seo.fiverr.description'),
|
|
||||||
ogTitle: () => t('seo.fiverr.title'),
|
|
||||||
ogDescription: () => t('seo.fiverr.description'),
|
|
||||||
ogImage: 'https://killiandalcin.fr/og-image.png',
|
|
||||||
ogImageWidth: 1200,
|
|
||||||
ogImageHeight: 630,
|
|
||||||
ogType: 'website',
|
|
||||||
})
|
|
||||||
|
|
||||||
const services = computed(() => siteConfig.fiverr.services)
|
|
||||||
const availableServices = computed(() => services.value.filter((s) => s.url !== '#'))
|
|
||||||
|
|
||||||
const heroStats = computed(() => [
|
|
||||||
{
|
|
||||||
number: availableServices.value.length,
|
|
||||||
label: t('fiverr.services.orderNow'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
number: '5',
|
|
||||||
label: t('fiverr.stats.rating'),
|
|
||||||
},
|
|
||||||
])
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<!-- Hero Section -->
|
|
||||||
<section class="relative pt-20 pb-16 px-4 sm:px-6 lg:px-8 overflow-hidden">
|
|
||||||
<div class="absolute inset-0 bg-gray-50/80 dark:bg-gray-900/40" aria-hidden="true" />
|
|
||||||
<div class="absolute top-0 right-0 w-[600px] h-[600px] bg-brand-500/5 dark:bg-brand-500/8 rounded-full blur-3xl -translate-y-1/2 translate-x-1/4 pointer-events-none" aria-hidden="true" />
|
|
||||||
|
|
||||||
<div class="relative z-10 max-w-4xl mx-auto text-center">
|
|
||||||
<span class="font-mono text-sm text-brand-500 dark:text-brand-400 tracking-wider">// fiverr</span>
|
|
||||||
<h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold mt-3 mb-6 bg-gradient-to-r from-gray-900 via-gray-800 to-gray-600 dark:from-white dark:via-gray-200 dark:to-gray-500 bg-clip-text text-transparent">
|
|
||||||
{{ t('fiverr.title') }}
|
|
||||||
</h1>
|
|
||||||
<p class="text-xl text-gray-500 dark:text-gray-400 mb-12 max-w-2xl mx-auto leading-relaxed">
|
|
||||||
{{ t('fiverr.subtitle') }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<!-- Stats -->
|
|
||||||
<div class="flex flex-wrap justify-center gap-8 sm:gap-12 mb-12">
|
|
||||||
<div v-for="stat in heroStats" :key="stat.label" class="text-center">
|
|
||||||
<div class="text-4xl sm:text-5xl font-black bg-gradient-to-b from-brand-400 to-brand-600 bg-clip-text text-transparent">{{ stat.number }}</div>
|
|
||||||
<div class="text-sm text-gray-500 dark:text-gray-400 mt-2 font-medium">{{ stat.label }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<UButton
|
|
||||||
:to="siteConfig.fiverr.profileUrl"
|
|
||||||
target="_blank"
|
|
||||||
external
|
|
||||||
size="xl"
|
|
||||||
trailing-icon="i-lucide-external-link"
|
|
||||||
class="font-semibold"
|
|
||||||
>
|
|
||||||
{{ t('fiverr.profileCta') }}
|
|
||||||
</UButton>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- Services Section -->
|
|
||||||
<section class="py-24 md:py-32 px-4 sm:px-6 lg:px-8">
|
|
||||||
<div class="max-w-7xl mx-auto">
|
|
||||||
<div class="text-center mb-16">
|
|
||||||
<span class="font-mono text-sm text-brand-500 dark:text-brand-400 tracking-wider">// services</span>
|
|
||||||
<h2 class="text-3xl sm:text-4xl lg:text-5xl font-bold mt-3 bg-gradient-to-r from-gray-900 via-gray-800 to-gray-600 dark:from-white dark:via-gray-200 dark:to-gray-500 bg-clip-text text-transparent">{{ t('fiverr.services.title') }}</h2>
|
|
||||||
<p class="text-lg text-gray-500 dark:text-gray-400 mt-4 leading-relaxed">{{ t('fiverr.services.subtitle') }}</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-5 lg:gap-6">
|
|
||||||
<div
|
|
||||||
v-for="service in services"
|
|
||||||
:key="service.id"
|
|
||||||
class="group rounded-2xl border border-gray-200/80 dark:border-gray-800/50 bg-white/80 dark:bg-gray-900/60 backdrop-blur-sm overflow-hidden transition-all duration-300 hover:border-brand-500/40 hover:shadow-xl hover:shadow-brand-500/10 hover:-translate-y-1.5"
|
|
||||||
>
|
|
||||||
<!-- Service Image -->
|
|
||||||
<div class="relative overflow-hidden">
|
|
||||||
<NuxtImg
|
|
||||||
:src="service.image"
|
|
||||||
:alt="t(`fiverr.serviceData.${service.id}.title`)"
|
|
||||||
class="w-full h-52 object-cover transition-transform duration-500 group-hover:scale-105"
|
|
||||||
loading="lazy"
|
|
||||||
/>
|
|
||||||
<div class="absolute inset-0 bg-gradient-to-t from-black/60 via-black/20 to-transparent" />
|
|
||||||
<!-- Price badge overlay -->
|
|
||||||
<div class="absolute bottom-3 left-3">
|
|
||||||
<span class="px-3 py-1.5 rounded-lg bg-brand-500 text-white text-sm font-bold shadow-lg backdrop-blur-sm">
|
|
||||||
{{ t('fiverr.pricing.startingAt') }} {{ service.price }}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<!-- Status badge -->
|
|
||||||
<div class="absolute top-3 right-3">
|
|
||||||
<span
|
|
||||||
:class="service.url !== '#'
|
|
||||||
? 'bg-green-500/90 text-white backdrop-blur-sm'
|
|
||||||
: 'bg-yellow-500/90 text-white backdrop-blur-sm'"
|
|
||||||
class="px-2.5 py-1 rounded-lg text-xs font-semibold shadow-lg"
|
|
||||||
>
|
|
||||||
{{ service.url !== '#' ? t('fiverr.services.available') : t('fiverr.services.comingSoon') }}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Content -->
|
|
||||||
<div class="p-6 sm:p-7">
|
|
||||||
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3 group-hover:text-brand-600 dark:group-hover:text-brand-400 transition-colors">
|
|
||||||
{{ t(`fiverr.serviceData.${service.id}.title`) }}
|
|
||||||
</h3>
|
|
||||||
<p class="text-gray-500 dark:text-gray-400 mb-6 leading-relaxed">
|
|
||||||
{{ t(`fiverr.serviceData.${service.id}.description`) }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<!-- Action Button -->
|
|
||||||
<UButton
|
|
||||||
v-if="service.url !== '#'"
|
|
||||||
:to="service.url"
|
|
||||||
target="_blank"
|
|
||||||
external
|
|
||||||
trailing-icon="i-lucide-external-link"
|
|
||||||
class="font-semibold"
|
|
||||||
>
|
|
||||||
{{ t('fiverr.services.orderNow') }}
|
|
||||||
</UButton>
|
|
||||||
<UButton
|
|
||||||
v-else
|
|
||||||
variant="outline"
|
|
||||||
disabled
|
|
||||||
class="font-semibold"
|
|
||||||
>
|
|
||||||
{{ t('fiverr.services.comingSoon') }}
|
|
||||||
</UButton>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- FAQ Section -->
|
|
||||||
<div class="relative bg-gray-50/50 dark:bg-gray-900/20">
|
|
||||||
<FAQSection
|
|
||||||
:faqs="homeFAQs"
|
|
||||||
:title="t('fiverr.faq.title')"
|
|
||||||
:subtitle="t('fiverr.faq.subtitle')"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- CTA Section -->
|
|
||||||
<CTASection
|
|
||||||
:title="t('fiverr.cta.title')"
|
|
||||||
:subtitle="t('fiverr.cta.subtitle')"
|
|
||||||
:primary-text="t('fiverr.cta.button')"
|
|
||||||
:primary-to="siteConfig.fiverr.profileUrl"
|
|
||||||
:secondary-text="t('fiverr.profileCta')"
|
|
||||||
secondary-to="/contact"
|
|
||||||
external
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
@@ -31,6 +31,9 @@ useHead({
|
|||||||
<div>
|
<div>
|
||||||
<HytaleHeroSection />
|
<HytaleHeroSection />
|
||||||
<HytaleServicesSection />
|
<HytaleServicesSection />
|
||||||
|
<div class="relative bg-gray-50/50 dark:bg-gray-900/20">
|
||||||
|
<HytaleDemoGrid />
|
||||||
|
</div>
|
||||||
<HytalePricingSection />
|
<HytalePricingSection />
|
||||||
<div class="relative bg-gray-50/50 dark:bg-gray-900/20">
|
<div class="relative bg-gray-50/50 dark:bg-gray-900/20">
|
||||||
<TestimonialsSection />
|
<TestimonialsSection />
|
||||||
|
|||||||
+10
-10
@@ -1,5 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { homeFAQs } from '~/data/faq'
|
import { homeFAQs } from '~/data/faq'
|
||||||
|
import { siteConfig } from '~/data/site'
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
@@ -24,25 +25,24 @@ useHead({
|
|||||||
{
|
{
|
||||||
'@type': 'Person',
|
'@type': 'Person',
|
||||||
name: "Killian' DAL-CIN",
|
name: "Killian' DAL-CIN",
|
||||||
url: 'https://killiandalcin.fr',
|
url: siteConfig.url,
|
||||||
jobTitle: 'Developpeur Full Stack Freelance',
|
jobTitle: siteConfig.jobTitle,
|
||||||
email: 'contact@killiandalcin.fr',
|
email: siteConfig.contact.email,
|
||||||
sameAs: [
|
sameAs: [
|
||||||
'https://linkedin.com/in/killian-dal-cin',
|
'https://linkedin.com/in/killian-dal-cin',
|
||||||
'https://www.fiverr.com/users/mr_kayjaydee',
|
|
||||||
'https://gitea.kamisama.ovh/kayjaydee',
|
'https://gitea.kamisama.ovh/kayjaydee',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'@type': 'ProfessionalService',
|
'@type': 'ProfessionalService',
|
||||||
name: "Killian' DAL-CIN - Developpeur Full Stack",
|
name: `Killian' DAL-CIN - ${siteConfig.jobTitle}`,
|
||||||
url: 'https://killiandalcin.fr',
|
url: siteConfig.url,
|
||||||
logo: 'https://killiandalcin.fr/images/logo.webp',
|
logo: 'https://killiandalcin.fr/images/logo.webp',
|
||||||
priceRange: '$$$',
|
priceRange: '$$$',
|
||||||
areaServed: 'Worldwide',
|
areaServed: 'Worldwide',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
const localePath = useLocalePath()
|
||||||
const { findById, projects } = useProjects()
|
const { findById, projects } = useProjects()
|
||||||
|
|
||||||
const project = findById(route.params.id as string)
|
const project = findById(route.params.id as string)
|
||||||
@@ -52,7 +53,7 @@ useSeoMeta({
|
|||||||
variant="solid"
|
variant="solid"
|
||||||
color="neutral"
|
color="neutral"
|
||||||
icon="i-lucide-arrow-left"
|
icon="i-lucide-arrow-left"
|
||||||
to="/projects"
|
:to="localePath('/projects')"
|
||||||
size="sm"
|
size="sm"
|
||||||
class="shadow-lg backdrop-blur-sm"
|
class="shadow-lg backdrop-blur-sm"
|
||||||
>
|
>
|
||||||
@@ -215,7 +216,7 @@ useSeoMeta({
|
|||||||
<NuxtLink
|
<NuxtLink
|
||||||
v-for="related in relatedProjects"
|
v-for="related in relatedProjects"
|
||||||
:key="related.id"
|
:key="related.id"
|
||||||
:to="`/project/${related.id}`"
|
:to="localePath(`/project/${related.id}`)"
|
||||||
class="flex gap-3 p-3 rounded-xl border border-transparent hover:border-brand-500/20 hover:bg-brand-500/5 transition-all duration-200 group"
|
class="flex gap-3 p-3 rounded-xl border border-transparent hover:border-brand-500/20 hover:bg-brand-500/5 transition-all duration-200 group"
|
||||||
>
|
>
|
||||||
<NuxtImg
|
<NuxtImg
|
||||||
|
|||||||
@@ -0,0 +1,138 @@
|
|||||||
|
---
|
||||||
|
title: "GravityFlip: from client brief to a production-grade Hytale plugin"
|
||||||
|
description: "Lessons learned shipping GravityFlip — how a vague request (\"I want to flip gravity\") became an architected, configurable Hytale plugin that builders can use without touching code."
|
||||||
|
date: "2026-04-25"
|
||||||
|
tags: ["hytale", "case-study", "gravity-flip", "consulting"]
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
|
||||||
|
> **TL;DR** — A client pinged me to "invert gravity in part of my map". Five questions later we were building a **multi-region plugin** with an in-game wand, JSON persistence, and three visualization modes. It's now live in production: [GravityFlip on Modtale](https://modtale.net/mod/gravity-flip).
|
||||||
|
|
||||||
|
## The original brief
|
||||||
|
|
||||||
|
The Discord message ran two sentences long:
|
||||||
|
|
||||||
|
> *"Hi, I'd like a plugin that flips gravity on a zone of my server. It's for an event this weekend, I can pay."*
|
||||||
|
|
||||||
|
This is exactly the most dangerous brief shape. Read fast, it sounds clear (*"flip gravity"* + *"zone"* — that's enough to start coding, right?). Read carefully, it says **nothing** specific:
|
||||||
|
|
||||||
|
- *"a zone"* — how many? one, configured via YAML? several, managed in-game? server-wide?
|
||||||
|
- *"flip gravity"* — for whom? players only? falling items? mobs? projectiles?
|
||||||
|
- *"for an event this weekend"* — one-off, or a reusable tool for the server's builders later?
|
||||||
|
- *"I can pay"* — what scope, what budget? Essential plugin at €149 or full system at €349?
|
||||||
|
|
||||||
|
I've made it a rule to **never write code until I've exhausted ambiguity**. It feels counter-intuitive when the client is in a hurry, but 30 minutes of questions saves 10 hours of rewrites.
|
||||||
|
|
||||||
|
## The five questions that changed everything
|
||||||
|
|
||||||
|
### 1. "How many zones, and who defines them?"
|
||||||
|
|
||||||
|
Answer: *"At first I thought just one, but actually I'd like my builders to create more without asking me each time."*
|
||||||
|
|
||||||
|
Immediate decision: **multi-region system** with persistence. Hardcoded YAML is out (too much friction). We pivot to an **in-game wand** plus `/gravityflip define <name>` commands. Classic Bukkit/Spigot community pattern, ported to Hytale.
|
||||||
|
|
||||||
|
### 2. "Who flips? Players only, or everything?"
|
||||||
|
|
||||||
|
Answer: *"Players for sure, but flipping dropped items would be sweet too. Mobs I'm not sure."*
|
||||||
|
|
||||||
|
Decision: **three booleans per region** — `AffectPlayers`, `AffectItems`, `AffectNpcs`. Default: all on, but the builder can disable mobs on a "jump arena" zone if floating mobs ruin the gameplay. The marginal cost of those three toggles in the JSON codec was zero — optionality offered for free.
|
||||||
|
|
||||||
|
### 3. "What happens when a player enters the zone at full free-fall speed?"
|
||||||
|
|
||||||
|
Answer (after a pause): *"Uhh... I hadn't thought about it. They shouldn't take fall damage, right?"*
|
||||||
|
|
||||||
|
Decision: **configurable `GracePeriodMs` (default 2500ms)**. During the transition, we smooth the gravity flip instead of an instant binary swap that produces brutal acceleration and absurd fall damage. Bonus: a `FallDamage` toggle (default false) for zones where falling should still cost something gameplay-wise.
|
||||||
|
|
||||||
|
That's the kind of detail **a written brief never surfaces**. A real conversation does.
|
||||||
|
|
||||||
|
### 4. "Do you want to see the zones when you're inside one?"
|
||||||
|
|
||||||
|
Answer: *"Yeah in build mode I have to, otherwise I lose track. But in player mode nothing should show."*
|
||||||
|
|
||||||
|
Decision: **three visualization modes**.
|
||||||
|
- `Outline` — configurable wireframe color (`VisualColor`, default `#00FFFF`) — build mode
|
||||||
|
- `Particles` — edge-emitting particles (`Torch_Fire` default), more subtle but visible
|
||||||
|
- `None` — invisible, production mode
|
||||||
|
|
||||||
|
Per-region toggle via the `/gravityflip toggle` command. Build and live mode coexist on the same map without re-deploying the plugin.
|
||||||
|
|
||||||
|
### 5. "Is this one-shot or are you reusing it?"
|
||||||
|
|
||||||
|
Answer: *"One-shot for the event, but if it's well done I'll keep it."*
|
||||||
|
|
||||||
|
Pivotal decision: we treat this project as **a production plugin**, not a script. Concretely:
|
||||||
|
- JSON persistence in `Server/mods/Mythlane_GravityFlip/regions.json` (not memory-only)
|
||||||
|
- 10 Hz tick loop with concurrent snapshots (lock-free reads)
|
||||||
|
- Unit tests on pure logic (codec, AABB geometry)
|
||||||
|
- Auto-seeded demo region on first run for instant onboarding
|
||||||
|
- Polished EN README, distributable
|
||||||
|
|
||||||
|
**Cost vs "quick & dirty"** : about 30 % more time. **Benefit** : the client moved from "I need it by Saturday" to "I still use it, my builders love it". The plugin is now publishable, monetizable, and so it became a shared asset.
|
||||||
|
|
||||||
|
## The architecture that emerged
|
||||||
|
|
||||||
|
```
|
||||||
|
Player / NPC / Item
|
||||||
|
│
|
||||||
|
▼ (each tick, 10 Hz)
|
||||||
|
RegionTickLoop ◄─── snapshots from regions.json
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
GravityApplier + FallDamageGuard
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
per-region effect
|
||||||
|
```
|
||||||
|
|
||||||
|
The wand follows its own cycle:
|
||||||
|
|
||||||
|
```
|
||||||
|
Player click → WandSelectionStore
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
/gravityflip define <name>
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Region registry → regions.json (auto-save)
|
||||||
|
```
|
||||||
|
|
||||||
|
Stack: **Java 25**, official Hytale Plugin API (`com.hypixel.hytale.plugin`), Gradle Shadow to relocate Gson (avoiding stdlib conflicts), JUnit 5 for tests. Source ~2,500 lines, 30 % of which is tests.
|
||||||
|
|
||||||
|
### The piece of code that took the most thinking
|
||||||
|
|
||||||
|
The **GracePeriodMs**. Not the code itself but the idea behind it: instead of a binary flip, we interpolate the vertical velocity component over a sliding window. Naively:
|
||||||
|
|
||||||
|
```java
|
||||||
|
// naive version — produces absurd fall damage
|
||||||
|
if (region.contains(entity)) {
|
||||||
|
entity.velocity.y = -entity.velocity.y; // instant flip
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
With a grace period, smooth transition:
|
||||||
|
|
||||||
|
```java
|
||||||
|
// production version — gradual entry
|
||||||
|
final long timeInRegion = now - entry.enteredAt();
|
||||||
|
final double gracePct = Math.min(1.0, timeInRegion / region.gracePeriodMs());
|
||||||
|
final double targetVy = -region.verticalForce(); // antigrav
|
||||||
|
entity.velocity.y = lerp(entity.velocity.y, targetVy, gracePct);
|
||||||
|
```
|
||||||
|
|
||||||
|
Three extra lines, but that's what makes the difference between a plugin that's "fun for 30 seconds" and a plugin that players actually use without rage-quitting.
|
||||||
|
|
||||||
|
## What this project taught me (or reminded me)
|
||||||
|
|
||||||
|
**First**: senior dev value isn't in code-typing speed. It's in the **series of questions** that turn a vague brief into an actionable spec. Without question 3 (free-fall), the client would have shipped the event with absurd fall damage, and the plugin would've been dropped after the weekend.
|
||||||
|
|
||||||
|
**Second**: a Hytale plugin that sells isn't a script. It's a **production-grade Java codebase** with persistence, tests, docs, and sub-5-minute onboarding. The client paid €349 (the "Custom System" tier), not €50 Fiverr — and the premium is justified by the quality the client will exploit for months.
|
||||||
|
|
||||||
|
**Third**: every plugin I write ends up published. GravityFlip is freely available on [Modtale](https://modtale.net/mod/gravity-flip) and soon on CurseForge. This doesn't dilute the value of paid commissions — it **boosts** my credibility to future prospects looking for a developer who can ship clean code, not just glue StackOverflow snippets.
|
||||||
|
|
||||||
|
## Got a Hytale project in mind?
|
||||||
|
|
||||||
|
The pattern is always the same: we talk for 30 minutes, I ask the 5-10 questions that kill ambiguity, I send a firm quote, I deliver. Pricing is public on [/hytale](/hytale) — €149 for an essential plugin, €349 for a custom system, €790+ for custom MMO infrastructure.
|
||||||
|
|
||||||
|
No Fiverr, no race-to-the-bottom. Just a senior dev shipping code you'll still use six months later.
|
||||||
|
|
||||||
|
[Request a quote](/contact) · [See GravityFlip in action](https://modtale.net/mod/gravity-flip) · [See my other plugins](/projects)
|
||||||
@@ -1,160 +1,166 @@
|
|||||||
---
|
---
|
||||||
title: "How to build your first Hytale plugin: a step-by-step guide"
|
title: "How to build your first Hytale plugin: a step-by-step guide"
|
||||||
description: "Learn to build your first Hytale plugin in Kotlin: project setup, event listener, custom command — with the complete source code."
|
description: "Learn to build your first Hytale plugin in Java: IntelliJ + Gradle setup, manifest.json, event listener — with the complete source code."
|
||||||
date: "2026-04-22"
|
date: "2026-04-22"
|
||||||
tags: ["hytale", "tutorial", "kotlin"]
|
tags: ["hytale", "tutorial", "java"]
|
||||||
draft: false
|
draft: false
|
||||||
---
|
---
|
||||||
|
|
||||||
## Why Hytale, why now
|
## Why Hytale, why now
|
||||||
|
|
||||||
The first time I booted a local Hytale server, I realized this platform was about to replay exactly what Minecraft did with Bukkit back in 2012 — except that in 2026, we start with Kotlin, a typed API, and an SDK designed from day one for plugin developers. Translation: wide-open window for anyone who wants to get in early.
|
The first time I booted a local Hytale server, I realized this platform was about to replay exactly what Minecraft did with Bukkit back in 2012 — except that in 2026, we start with Java 25, an official API shipped by Hypixel, and a GitHub plugin template maintained by the HytaleModding community. Translation: wide-open window for anyone who wants to get in early during the early-access phase.
|
||||||
|
|
||||||
In this guide, I'll walk you through building my first Hytale plugin — a minimal module that listens for a player joining and adds a `/hello` command. Nothing spectacular, but it's exactly the skeleton you need to iterate on more ambitious features. If you'd rather [commission a Hytale plugin](/en/hytale) instead of writing it yourself, that works too — but if you're here, you probably want to get your hands dirty.
|
In this guide, I'll walk you through building my first Hytale plugin — a minimal module that listens for a player joining and logs the event. Nothing spectacular, but it's exactly the skeleton you need to iterate on more ambitious features. If you'd rather [commission a Hytale plugin](/en/hytale) instead of writing it yourself, that works too — but if you're here, you probably want to get your hands dirty.
|
||||||
|
|
||||||
::alert{type="info"}
|
::alert{type="info"}
|
||||||
**API note** — The API names referenced here are based on the public Hytale SDK 2026 documentation. They may evolve at official launch — adapt based on the most current docs at the time you're reading this.
|
**API note** — Hytale is in early access in 2026. The plugin API (package `com.hypixel.hytale.plugin`) is officially provided by Hypixel, but the official GitBook documentation is still being written. The reference community resources are `hytalemodding.dev` and `britakee-studios.gitbook.io/hytale-modding-documentation`. Exact event class names may still evolve — double-check against the latest docs whenever you're reading this.
|
||||||
::
|
::
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
Before cloning anything, make sure you have:
|
Before cloning anything, make sure you have:
|
||||||
|
|
||||||
- **JDK 17+** (I recommend Temurin 21 — the Hytale 2026 SDK runs on it without issue)
|
- **JDK 25** — the version assumed by the current Hytale plugin docs. Temurin works great.
|
||||||
- **IntelliJ IDEA Community Edition** — free, and the Gradle + Kotlin integration is excellent
|
- **IntelliJ IDEA Community Edition** — free, it's the IDE recommended by HytaleModding, and its Gradle + Java integration is flawless
|
||||||
- **Gradle 8.x** (IntelliJ bundles it, no need to install separately)
|
- **Gradle** (bundled with IntelliJ, no separate install needed)
|
||||||
- Solid basics in **Kotlin**: classes, lambdas, annotations, nullability
|
- Solid basics in **modern Java**: classes, annotations, generics, lambdas
|
||||||
|
|
||||||
I'm assuming you already have a local Hytale server that boots. If not, the official server docs are your starting point — this guide focuses on the plugin, not on hosting.
|
I'm assuming you already have a local Hytale server that boots. If not, the plugin template available on `hytalemodding.dev` points you to the right server version — this guide focuses on the plugin, not on hosting.
|
||||||
|
|
||||||
## Project scaffold
|
## Project scaffold
|
||||||
|
|
||||||
The minimal tree looks like this:
|
The easiest path is to start from the official HytaleModding template. The minimal tree looks like this:
|
||||||
|
|
||||||
```
|
```
|
||||||
my-first-plugin/
|
my-first-plugin/
|
||||||
├── build.gradle.kts
|
├── build.gradle
|
||||||
├── src/
|
├── settings.gradle
|
||||||
│ └── main/
|
├── gradle.properties
|
||||||
│ ├── kotlin/
|
└── src/
|
||||||
│ │ └── com/example/myplugin/
|
└── main/
|
||||||
│ │ └── MyPlugin.kt
|
├── java/
|
||||||
│ └── resources/
|
│ └── com/example/myplugin/
|
||||||
│ └── plugin.toml
|
│ └── MyPlugin.java
|
||||||
|
└── resources/
|
||||||
|
└── manifest.json
|
||||||
```
|
```
|
||||||
|
|
||||||
The minimal `build.gradle.kts` I use:
|
The `settings.gradle` simply declares the project name:
|
||||||
|
|
||||||
```kotlin
|
```groovy
|
||||||
plugins {
|
rootProject.name = 'my-first-plugin'
|
||||||
kotlin("jvm") version "2.0.0"
|
```
|
||||||
id("com.github.johnrengelman.shadow") version "8.1.1"
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
The `gradle.properties` sets the group and version:
|
||||||
mavenCentral()
|
|
||||||
maven("https://repo.hytale.io/public")
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
```properties
|
||||||
compileOnly("io.hytale:hytale-api:1.0.0")
|
group=com.example
|
||||||
}
|
version=1.0.0
|
||||||
|
```
|
||||||
|
|
||||||
tasks {
|
The `manifest.json` file — **this is what replaces the `plugin.yml` from the Bukkit world** — declares your plugin to the Hytale server. It lives under `src/main/resources/` and minimally contains:
|
||||||
build { dependsOn("shadowJar") }
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Group": "com.example",
|
||||||
|
"Name": "MyFirstPlugin",
|
||||||
|
"Main": "com.example.myplugin.MyPlugin",
|
||||||
|
"Version": "1.0.0",
|
||||||
|
"Description": "My first Hytale plugin",
|
||||||
|
"Authors": ["you"],
|
||||||
|
"ServerVersion": "*"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
The `plugin.toml` manifest declares your plugin to the server:
|
No useless boilerplate. The `Main` field must point to the class that extends `JavaPlugin` — that's literally the only required runtime configuration.
|
||||||
|
|
||||||
```toml
|
|
||||||
name = "MyPlugin"
|
|
||||||
version = "0.1.0"
|
|
||||||
main = "com.example.myplugin.MyPlugin"
|
|
||||||
authors = ["you"]
|
|
||||||
```
|
|
||||||
|
|
||||||
That's it. No boilerplate stands between you and the first useful line of code.
|
|
||||||
|
|
||||||
## First event listener — the heart of the plugin
|
## First event listener — the heart of the plugin
|
||||||
|
|
||||||
Here's the main class. This is the file you'll spend the most time in during the first weeks, so treat it seriously:
|
Here's the main class. It extends `JavaPlugin` from the official `com.hypixel.hytale.plugin` package, with the constructor signature **exactly** as required by the API:
|
||||||
|
|
||||||
```kotlin
|
```java
|
||||||
package com.example.myplugin
|
package com.example.myplugin;
|
||||||
|
|
||||||
import io.hytale.api.HytalePlugin
|
import com.hypixel.hytale.plugin.JavaPlugin;
|
||||||
import io.hytale.api.event.EventHandler
|
import com.hypixel.hytale.plugin.JavaPluginInit;
|
||||||
import io.hytale.api.event.player.PlayerJoinEvent
|
import jakarta.annotation.Nonnull;
|
||||||
|
|
||||||
class MyPlugin : HytalePlugin() {
|
public class MyPlugin extends JavaPlugin {
|
||||||
|
|
||||||
override fun onEnable() {
|
public MyPlugin(@Nonnull JavaPluginInit init) {
|
||||||
logger.info("MyPlugin enabled")
|
super(init);
|
||||||
server.events.register(this)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDisable() {
|
@Override
|
||||||
logger.info("MyPlugin disabled — cleaning up")
|
public void onEnable() {
|
||||||
|
getLogger().info("MyPlugin enabled");
|
||||||
|
getServer().getPluginManager().registerEvents(new JoinListener(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@Override
|
||||||
fun onPlayerJoin(event: PlayerJoinEvent) {
|
public void onDisable() {
|
||||||
val player = event.player
|
getLogger().info("MyPlugin disabled — cleaning up");
|
||||||
player.sendMessage("Welcome to the server, ${player.name}!")
|
|
||||||
logger.info("Player ${player.name} joined at ${event.timestamp}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Quick breakdown:
|
Quick breakdown:
|
||||||
|
|
||||||
- `HytalePlugin` is the base class provided by the API. It exposes `logger`, `server`, and the lifecycle hooks (`onEnable` / `onDisable`).
|
- `JavaPlugin` is the base class provided by the Hypixel API. It exposes `getLogger()`, `getServer()`, and the lifecycle hooks (`onEnable` / `onDisable`).
|
||||||
- `server.events.register(this)` tells the server that this instance holds `@EventHandler` methods. Without that line, your listener will never fire — classic mistake I made the first time around.
|
- The **constructor taking `@Nonnull JavaPluginInit init`** is mandatory — without that exact signature, the plugin manager cannot instantiate your class at load time. That's the mistake I made the first time around: forget the constructor, and spend 30 minutes debugging a `NoSuchMethodException`.
|
||||||
- The `@EventHandler` annotation marks the method as an event target. The `PlayerJoinEvent` parameter type acts as a filter: only that event triggers the method.
|
- `getServer().getPluginManager().registerEvents(...)` registers an external listener with the server. The API shape is deliberately close to Bukkit — devs coming from Spigot/Paper feel right at home, even though the package and implementation are Hypixel's own.
|
||||||
- `event.player` exposes a `Player` object with `sendMessage`, `teleport`, `inventory`, and so on.
|
|
||||||
|
|
||||||
Compile, start the server, connect: you should see the welcome message in chat. If not, check the server logs — a `ClassNotFoundException` usually means the shadow jar isn't packed correctly.
|
The listener itself lives in its own class — cleaner and more testable:
|
||||||
|
|
||||||
## Adding a custom command
|
```java
|
||||||
|
package com.example.myplugin;
|
||||||
|
|
||||||
Listening to events is half the job. The other half is letting players interact with your plugin through commands. Add this method in the same class:
|
import com.hypixel.hytale.plugin.event.EventHandler;
|
||||||
|
import com.hypixel.hytale.plugin.event.Listener;
|
||||||
|
import com.hypixel.hytale.plugin.event.player.PlayerJoinEvent;
|
||||||
|
|
||||||
```kotlin
|
public class JoinListener implements Listener {
|
||||||
import io.hytale.api.command.Command
|
|
||||||
import io.hytale.api.command.CommandSender
|
|
||||||
|
|
||||||
@Command(name = "hello", description = "Says hello back")
|
@EventHandler
|
||||||
fun onHelloCommand(sender: CommandSender, args: List<String>) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
val target = args.firstOrNull() ?: sender.name
|
var player = event.getPlayer();
|
||||||
sender.sendMessage("Hello, $target!")
|
player.sendMessage("Welcome to the server, " + player.getName() + "!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
You can now type `/hello` or `/hello Killian` in-game. The `@Command` annotation registers the command automatically — no need to list it in `plugin.toml`. If you want strict argument validation, `CommandSender` exposes `hasPermission(node)` to gate access.
|
::alert{type="warning"}
|
||||||
|
**Approximate event names** — `PlayerJoinEvent` is a plausible name that follows the Bukkit-like style the docs hint at, but not every exact event class is publicly catalogued yet. Verify the actual class available in your Hytale SDK version before shipping to production.
|
||||||
|
::
|
||||||
|
|
||||||
|
Compile, start the server, connect: you should see the welcome message in chat. If not, check the server logs — a `NoSuchMethodException` on the constructor almost always means you forgot the `(@Nonnull JavaPluginInit init)` signature.
|
||||||
|
|
||||||
## Build + local deploy
|
## Build + local deploy
|
||||||
|
|
||||||
The loop I run 20 times a day:
|
The loop I run 20 times a day:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./gradlew shadowJar
|
./gradlew build
|
||||||
cp build/libs/my-first-plugin-all.jar ~/hytale-server/plugins/
|
cp build/libs/my-first-plugin-1.0.0.jar ~/hytale-server/plugins/
|
||||||
# Then in the server console:
|
# Then restart the server, or use the reload command if available
|
||||||
> reload MyPlugin
|
|
||||||
```
|
```
|
||||||
|
|
||||||
The `shadowJar` task packs all your runtime dependencies into a single `.jar`, which avoids classpath headaches. On more ambitious plugins — SQLite persistence, embedded REST API, Discord integrations — it quickly becomes essential. If that kind of scope resonates but you'd rather delegate the development side, you can always [commission a custom Hytale plugin](/en/hytale) from someone doing it day in, day out.
|
The `.jar` produced by `./gradlew build` under `build/libs/` drops directly into your Hytale server's `plugins/` folder. The name follows the `{rootProject.name}-{version}.jar` pattern defined in your Gradle files. Once the plugin grows — persistence, external integrations, third-party libs — you'll switch to a `shadowJar` to bundle dependencies, but for a first plugin the base config is plenty. If that kind of scope resonates but you'd rather delegate the development side, you can always [commission a custom Hytale plugin](/en/hytale) from someone doing it day in, day out.
|
||||||
|
|
||||||
## Next steps
|
## Next steps
|
||||||
|
|
||||||
Once your first plugin is running, the natural paths forward are:
|
Once your first plugin is running, the natural paths forward are:
|
||||||
|
|
||||||
- Listen to more events: `BlockBreakEvent`, `PlayerChatEvent`, `EntityDamageEvent` — the full list lives in the `io.hytale.api.event` package.
|
- Listen to more events — the exact list of available event classes is easiest to discover through IntelliJ autocomplete on the `com.hypixel.hytale.plugin.event` package.
|
||||||
- Persist data: start with a simple `JsonFile` in your plugin folder, switch to SQLite once you cross 50 KB of state.
|
- Persist data: start with a simple JSON file in your plugin folder, switch to SQLite once you cross 50 KB of state.
|
||||||
- Add permissions: the Hytale API ships with a node system like `myplugin.admin.reload` that integrates with server groups.
|
- Structure your code: a growing plugin deserves a clean listener / service / repository separation the moment you cross 300 lines.
|
||||||
- Profile your handlers: a slow event listener directly impacts the server's TPS. `logger.info` with timestamps is your first tool, then Flight Recorder when you get serious.
|
- Profile your handlers: a slow event listener directly impacts the server's TPS. `getLogger().info` with timestamps is your first tool, then Flight Recorder when you go to production.
|
||||||
|
|
||||||
|
## Further reading
|
||||||
|
|
||||||
|
- [hytalemodding.dev](https://hytalemodding.dev) — plugin template and FR+EN guides
|
||||||
|
- [britakee-studios.gitbook.io/hytale-modding-documentation](https://britakee-studios.gitbook.io/hytale-modding-documentation) — community GitBook, the most up-to-date source on the API
|
||||||
|
|
||||||
## Wrapping up
|
## Wrapping up
|
||||||
|
|
||||||
A Hytale plugin is essentially a Kotlin class that extends `HytalePlugin`, registers listeners, and exposes commands. Everything else — persistence, UI, integrations — builds on top of that 50-line foundation. If you've followed along this far, you already have the technical base to ship any idea you have in mind. Code an ugly first thing, get it running, iterate. That's always how it starts.
|
A Hytale plugin is essentially a Java class that extends `JavaPlugin`, exposes the right constructor, registers listeners via the `PluginManager`, and describes itself in a `manifest.json`. Everything else — persistence, integrations, UI — builds on top of that 50-line foundation. If you've followed along this far, you already have the technical base to ship any idea you have in mind during this early-access window. Code an ugly first thing, get it running, iterate. That's always how it starts.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Hytale plugin development in 2026: state of the art and outlook"
|
title: "Hytale plugin development in 2026: state of the art and outlook"
|
||||||
description: "A 2026 snapshot of the Hytale plugin ecosystem: tech stack, modern patterns, and what's next for the community."
|
description: "A 2026 snapshot of the Hytale plugin ecosystem: the Java choice, Hypixel's official API, modern patterns, and what's next."
|
||||||
date: "2026-04-21"
|
date: "2026-04-21"
|
||||||
tags: ["hytale", "industry", "analysis"]
|
tags: ["hytale", "industry", "analysis"]
|
||||||
draft: false
|
draft: false
|
||||||
@@ -8,70 +8,93 @@ draft: false
|
|||||||
|
|
||||||
## Where Hytale stands in 2026
|
## Where Hytale stands in 2026
|
||||||
|
|
||||||
A few years ago, "Hytale plugin development" meant hacking on preview builds, re-reading SDK release notes three times before touching an API, and praying that an event class wouldn't rename itself next week. In 2026, the texture has changed: the official SDK has stabilized, production-grade patterns have emerged, and the line between community server and indie commercial studio has blurred.
|
A few years ago, "Hytale plugin development" meant hacking on preview builds, re-reading release notes three times before touching an API, and praying that an event class wouldn't rename itself next week. In 2026, the texture has changed: Hytale has entered early access, Hypixel has shipped its official plugin API (package `com.hypixel.hytale.plugin`), and the community has converged around a maintained GitHub plugin template and a community GitBook that acts as the reference documentation while the official one is still being written.
|
||||||
|
|
||||||
I've been building [Hytale plugins on commission](/en/hytale) since the early betas, and what I see on client codebases looks less and less like hobbyist scripting. Servers that want a real audience — player-driven economies, competitive PvP, structured roleplay — now demand the same rigor as any serious server-side Kotlin codebase: tests, CI, versioning, reviews.
|
I've been building [Hytale plugins on commission](/en/hytale) since the early previews, and what I see on client codebases looks less and less like hobbyist scripting. Servers aiming at a real audience — player-driven economies, competitive PvP, structured roleplay — now demand the same rigor as any serious server-side JVM codebase: tests, CI, versioning, reviews.
|
||||||
|
|
||||||
The thesis of this post is simple: 2026 is the year Hytale plugin development becomes a real craft, with its own conventions, tooling, and pitfalls. Here's what I'm seeing in production, what works, and what we should stop doing.
|
The thesis of this post is simple: 2026 is the year Hytale stops being a speculation target and becomes a concrete dev platform, with its official language (Java), its API conventions, and its first stabilized patterns. Here's what I'm seeing.
|
||||||
|
|
||||||
## The 2026 stack: Kotlin, coroutines, and mature tooling
|
## The Java choice and what it signals
|
||||||
|
|
||||||
Kotlin is the lingua franca on the plugin side. Residual Java survives in older codebases ported from other ecosystems, but any new serious project starts in Kotlin/JVM. The tooling follows suit: Gradle Kotlin DSL is the norm, IntelliJ IDEA is the reference IDE, and the JUnit 5 + MockK testing chain covers most unit and integration needs.
|
Hypixel made the call: the Hytale plugin API is in **Java**, not Kotlin. That decision, readable both in the official template at `hytalemodding.dev` and in the community GitBook, is deliberate and coherent. The `JavaPlugin` base class (package `com.hypixel.hytale.plugin`) visually echoes the pattern every dev coming from Bukkit/Spigot recognizes at first glance: `onEnable()`, `onDisable()`, listener registration via `getServer().getPluginManager()`. The resemblance isn't accidental — it's an onboarding choice. A seasoned Paper dev can read the template and be productive in a few hours.
|
||||||
|
|
||||||
The most visible shift is the systematic adoption of coroutines for anything I/O-shaped. Old Bukkit-era reflexes — everything synchronous on the main thread, a manual `Thread` here and there for the slow stuff — have given way to dedicated scopes, cleanly cancelled on plugin shutdown.
|
Another strong signal: the constructor signature is **mandatory** (`public YourPlugin(@Nonnull JavaPluginInit init)`), and the manifest lives in a `manifest.json` (not `plugin.yml`) with capitalized fields (`Group`, `Name`, `Main`, `Version`, `Authors`, `ServerVersion`). These are the two places where Hypixel intentionally diverges from Bukkit legacy — enough to stake its own identity, not enough to lose the existing dev base.
|
||||||
|
|
||||||
Here's a pattern I push on client projects: an event handler that fires an async profile lookup without ever blocking the main tick.
|
The Java 25 assumed by the docs also lets the API lean on modern language features. Records for event modeling, sealed interfaces for closed hierarchies, pattern matching in switch expressions, and virtual threads (stable since Java 21) for async I/O without pulling in a coroutine library. It's a 2026 Java, not a 2016 Java — and it shows in the quality of API signatures the community documents.
|
||||||
|
|
||||||
```kotlin
|
## A modern plugin skeleton
|
||||||
package com.example.ecoplugin
|
|
||||||
|
|
||||||
import io.hytale.api.HytalePlugin
|
Here's the kind of skeleton I push on client projects that start ambitious: a plugin that leans on records, sealed interfaces, and virtual threads to handle I/O without ever blocking the server tick.
|
||||||
import io.hytale.api.event.EventHandler
|
|
||||||
import io.hytale.api.event.player.PlayerJoinEvent
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.SupervisorJob
|
|
||||||
import kotlinx.coroutines.cancel
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
|
|
||||||
class EcoPlugin : HytalePlugin() {
|
```java
|
||||||
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
|
package com.example.ecoplugin;
|
||||||
|
|
||||||
@EventHandler
|
import com.hypixel.hytale.plugin.JavaPlugin;
|
||||||
fun onJoin(event: PlayerJoinEvent) {
|
import com.hypixel.hytale.plugin.JavaPluginInit;
|
||||||
scope.launch {
|
import jakarta.annotation.Nonnull;
|
||||||
val profile = profileRepo.fetch(event.player.uuid)
|
|
||||||
event.player.sendMessage("Welcome back, balance: ${profile.balance}")
|
import java.util.concurrent.ExecutorService;
|
||||||
}
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
|
public class EcoPlugin extends JavaPlugin {
|
||||||
|
|
||||||
|
// Closed, modeled type — no stringly-typed enum
|
||||||
|
sealed interface EcoEvent permits Deposit, Withdraw, Transfer {}
|
||||||
|
record Deposit(String playerId, long amount) implements EcoEvent {}
|
||||||
|
record Withdraw(String playerId, long amount) implements EcoEvent {}
|
||||||
|
record Transfer(String from, String to, long amount) implements EcoEvent {}
|
||||||
|
|
||||||
|
// Virtual threads: an "infinite" pool for I/O, near-zero cost per task
|
||||||
|
private final ExecutorService io = Executors.newVirtualThreadPerTaskExecutor();
|
||||||
|
|
||||||
|
public EcoPlugin(@Nonnull JavaPluginInit init) {
|
||||||
|
super(init);
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDisable() {
|
@Override
|
||||||
scope.cancel()
|
public void onEnable() {
|
||||||
|
getLogger().info("EcoPlugin enabled");
|
||||||
|
getServer().getPluginManager().registerEvents(new EcoListener(this), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
io.shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void dispatch(EcoEvent event) {
|
||||||
|
io.submit(() -> {
|
||||||
|
switch (event) {
|
||||||
|
case Deposit d -> getLogger().info("deposit " + d.amount() + " for " + d.playerId());
|
||||||
|
case Withdraw w -> getLogger().info("withdraw " + w.amount() + " for " + w.playerId());
|
||||||
|
case Transfer t -> getLogger().info("transfer " + t.amount() + " " + t.from() + "→" + t.to());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Three details matter: the `SupervisorJob` that stops one bad coroutine from killing its siblings, the `Dispatchers.IO` that keeps us off the default pool, and the `scope.cancel()` in `onDisable()` that leaves the JVM clean on reload. Nothing revolutionary — just the baseline coroutine hygiene the ecosystem finally internalized.
|
Three things are worth pausing on. First, the **sealed interface** `EcoEvent` with its three records: the compiler checks switch-expression exhaustiveness, and adding a new event type breaks compilation exactly where it should — the kind of safety net Kotlin already offered with `sealed class`, and that Java eventually brought back cleanly. Second, the **records**: zero boilerplate, structural equality by default, immutability, perfect readability. Third, `newVirtualThreadPerTaskExecutor()`: an executor that spawns one virtual thread per task, effectively free, ideal for I/O that must never touch the main server tick.
|
||||||
|
|
||||||
::alert{type="tip"}
|
::alert{type="tip"}
|
||||||
**Heads-up** — The public Hytale API is still evolving; exact class names (`HytalePlugin`, `PlayerJoinEvent`) may shift between major versions. The pattern — lifecycle-aware scope, I/O dispatcher, cancel on shutdown — stays valid regardless of naming.
|
**Heads-up** — Exact event class names (`PlayerJoinEvent`, etc.) may still move during early access. The pattern — virtual-thread executor for I/O, records for immutable data, sealed interface for event hierarchies — remains valid regardless of the final naming.
|
||||||
::
|
::
|
||||||
|
|
||||||
## Modern patterns: what replaced the Bukkit-era bad habits
|
## Modern patterns: what replaced the Bukkit-era bad habits
|
||||||
|
|
||||||
The three practice shifts I see most clearly on serious codebases:
|
The three practice shifts I see most clearly on serious codebases:
|
||||||
|
|
||||||
**Explicit dependency injection.** No more global singletons reached from anywhere. Either a small container like `Koin`, or manual constructor injection. Event handlers receive their collaborators instead of grabbing them from a static field — which makes the code testable without monkey-patching.
|
**Explicit dependency injection.** No more global singletons reached from anywhere. Either a small container (Guice is still popular on the Java side), or manual constructor injection. Listeners receive their collaborators instead of grabbing them from a static field — which makes the code testable without monkey-patching.
|
||||||
|
|
||||||
**Handler / business logic separation.** An `@EventHandler` becomes a thin adapter: it pulls the relevant data off the event, calls a pure business service, and applies the result. The logic lives in classes you can test without instantiating half the SDK.
|
**Listener / business logic separation.** An `@EventHandler` becomes a thin adapter: it pulls the relevant data off the event, calls a pure business service, and applies the result. The logic lives in classes you can test without instantiating half the SDK.
|
||||||
|
|
||||||
**Typed configuration.** No more manual YAML parsing into `Map<String, Any>`. `kotlinx.serialization` deserializes into a data class, and any missing or wrongly typed key blows up at load — not three days later in production when a player finally triggers that code path.
|
**Typed configuration.** No more manual parsing into `Map<String, Object>`. Jackson or Gson deserializes into records, and any missing or wrongly typed key blows up at load — not three days later in production when a player finally triggers that code path.
|
||||||
|
|
||||||
**Tests.** Unit tests on business logic, integration tests on handlers with a mocked SDK. This is no longer eccentric; it's what separates a commercial plugin from a weekend script.
|
**Tests.** JUnit 5 on business logic, integration tests on listeners with a mocked SDK (Mockito). This is no longer eccentric — it's what separates a commercial plugin from a weekend script.
|
||||||
|
|
||||||
## Ecosystem: libraries and SDKs that matter
|
## Ecosystem: libraries and resources that matter
|
||||||
|
|
||||||
The official Hytale SDK is the foundation. Around it, the ecosystem is more fragmented than Paper/Spigot at comparable maturity, but a few active GitHub hubs and dev Discords do the curation: Kotlin-idiomatic wrappers on Java-first APIs, DSLs for command configuration, persistence helpers.
|
The official Hypixel API is the foundation. Around it, the ecosystem is younger than Paper/Spigot at comparable maturity, but two hubs carry their weight: `hytalemodding.dev` (maintained plugin template, FR+EN guides) and the GitBook at `britakee-studios.gitbook.io/hytale-modding-documentation` (the most up-to-date community documentation while the official one is still being written). Between the two, a motivated dev has everything needed to start cleanly.
|
||||||
|
|
||||||
Recurring anti-patterns I find during client codebase audits: handlers doing blocking I/O on the main thread, shared global state without synchronization, config stored in untyped `HashMap`, zero structured logging. None of it is new — they're the same wounds as any JVM plugin ecosystem, with the same cure: discipline, typing, isolation.
|
Recurring anti-patterns I find during client codebase audits: handlers doing blocking I/O on the main thread, shared global state without synchronization, config stored in untyped `HashMap`, zero structured logging. None of it is new — they're the same wounds as any JVM plugin ecosystem, with the same cure: discipline, typing, isolation.
|
||||||
|
|
||||||
@@ -79,16 +102,16 @@ Recurring anti-patterns I find during client codebase audits: handlers doing blo
|
|||||||
|
|
||||||
A few trends I'd bet on for the next 12-18 months:
|
A few trends I'd bet on for the next 12-18 months:
|
||||||
|
|
||||||
**Client-side scripting.** If the platform extends its client-side hooks as it has hinted, a whole class of cosmetic / UX plugins becomes feasible without server-side hacks. Worth watching.
|
**Official documentation catching up.** The official Hypixel GitBook is still being written; as it fills in, expect the event naming, command APIs, and packaging conventions to converge further.
|
||||||
|
|
||||||
**Stricter packaging formats.** Published plugins are starting to look like proper Gradle artifacts: rich metadata, declared dependencies, signatures. Distribution platforms are catching up.
|
**Signature gameplay loops emerging.** Hytale in early access is surfacing the first big server experiences — cross-world economies, persistent mini-games, competitive modes. The plugins powering them are the labs where tomorrow's patterns will be forged.
|
||||||
|
|
||||||
**Professionalization of monetization.** One-shot commissions remain dominant, but I'm seeing rev-share arrangements on monetized servers, annual maintenance contracts, and B2B licensing for complex features. If you want to outsource an ambitious plugin instead of stacking it on an internal backlog, I offer [Hytale plugin development on commission](/en/hytale) — modern patterns and typed config included by default.
|
**Professionalization of monetization.** One-shot commissions remain dominant, but I'm seeing rev-share arrangements on monetized servers, annual maintenance contracts, and B2B licensing for complex features. If you want to outsource an ambitious plugin instead of stacking it on an internal backlog, I offer [Hytale plugin development on commission](/en/hytale) — modern patterns and mastery of the official API included by default.
|
||||||
|
|
||||||
**Debug / profiling tooling.** Still the poor cousin. The best teams write their own; expect public libraries to fill that gap.
|
**Debug / profiling tooling.** Still the poor cousin. The best teams write their own; expect public libraries to fill that gap as early access progresses.
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
||||||
2026 isn't the year of a Hytale revolution — it's the year of consolidation. The patterns exist, the tooling is there, the expectations of serious servers have moved up a notch. The "weekend script" plugin will keep existing and delighting its authors, but the tier above — plugins you sell, maintain, and integrate into a commercial server — now follows the same standards as any serious Kotlin service.
|
2026 isn't the year of a Hytale revolution — it's the year of consolidation. The official API is here, Java is locked in as the reference language, and modern features (records, sealed, virtual threads) give the language an expressiveness that fully justifies the choice. Community tooling and documentation cover the gaps the official docs still leave.
|
||||||
|
|
||||||
For developers on the fence: this is the moment. The API has settled, the community knows what it's doing, and servers are hungry. What was an obscure hobby three years ago has become a legitimate technical niche — with all the rigor that implies, but also all the opportunity.
|
For developers on the fence: this is the moment. The API has a clear identity, the community knows what it's doing, and early-access servers are hungry. What was an obscure hobby three years ago has become a legitimate technical niche — with all the rigor that implies, but also all the opportunity.
|
||||||
|
|||||||
@@ -0,0 +1,138 @@
|
|||||||
|
---
|
||||||
|
title: "GravityFlip : du brief client au plugin Hytale en production"
|
||||||
|
description: "Retour d'expérience sur le développement de GravityFlip — comment une demande floue (\"je veux inverser la gravité\") devient un plugin Hytale architecturé, configurable, et utilisable par des builders sans toucher au code."
|
||||||
|
date: "2026-04-25"
|
||||||
|
tags: ["hytale", "case-study", "gravity-flip", "consulting"]
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
|
||||||
|
> **TL;DR** — Un client m'a contacté pour "inverser la gravité dans une partie de la map". Cinq questions plus tard, on était sur un plugin de **régions paramétrables** avec wand in-game, persistence JSON, et trois modes de visualisation. Le résultat tourne aujourd'hui en production : [GravityFlip sur Modtale](https://modtale.net/mod/gravity-flip).
|
||||||
|
|
||||||
|
## Le brief initial
|
||||||
|
|
||||||
|
Le message Discord d'origine tient en deux phrases :
|
||||||
|
|
||||||
|
> *"Salut, j'aimerais un plugin qui inverse la gravité sur une zone de mon serveur. C'est pour un event ce week-end, je peux payer."*
|
||||||
|
|
||||||
|
C'est exactement la forme de brief la plus dangereuse. Lue rapidement, elle donne l'illusion d'être claire (*"inverser la gravité"* + *"zone"* = ça suffit pour coder, non ?). Lue posément, elle ne dit **rien** de précis :
|
||||||
|
|
||||||
|
- *"une zone"* — combien ? une seule, configurée par YAML ? plusieurs, gérées en jeu ? globale au serveur ?
|
||||||
|
- *"inverser la gravité"* — pour qui ? les joueurs uniquement ? les items qui tombent ? les mobs ? les projectiles ?
|
||||||
|
- *"pour un event ce week-end"* — usage one-shot ou outil réutilisable par les builders du serveur après ?
|
||||||
|
- *"je peux payer"* — quel scope, quel budget ? Plugin essentiel à 149€ ou système complet à 349€ ?
|
||||||
|
|
||||||
|
J'ai pris l'habitude de **ne jamais coder avant d'avoir épuisé les ambiguïtés**. Ça paraît contre-intuitif quand le client est pressé, mais 30 minutes de questions économisent 10 heures de réécriture.
|
||||||
|
|
||||||
|
## Les cinq questions qui ont tout changé
|
||||||
|
|
||||||
|
### 1. "Combien de zones, et qui les définit ?"
|
||||||
|
|
||||||
|
Réponse : *"Au début je pensais une seule, mais en fait j'aimerais que mes builders puissent en créer plusieurs sans me demander à chaque fois."*
|
||||||
|
|
||||||
|
Décision immédiate : **système multi-régions** avec persistence. On exclut le YAML hardcodé (trop friction) et on s'oriente vers un **wand in-game** + commandes `/gravityflip define <name>`. Pattern classique de la communauté Bukkit/Spigot, repris pour Hytale.
|
||||||
|
|
||||||
|
### 2. "Pour qui la gravité s'inverse ? Joueurs uniquement, ou tout ?"
|
||||||
|
|
||||||
|
Réponse : *"Les joueurs ouais, mais aussi les items dropés ce serait stylé. Les mobs je sais pas."*
|
||||||
|
|
||||||
|
Décision : **trois booleans configurables par région** — `AffectPlayers`, `AffectItems`, `AffectNpcs`. Default = tout activé, mais le builder peut désactiver les mobs sur une zone "salle de saut" si les mobs flottants gâchent le gameplay. Le coût marginal de ces 3 toggles dans le codec JSON était nul, l'optionalité a été offerte.
|
||||||
|
|
||||||
|
### 3. "Que se passe-t-il quand un joueur entre dans la zone à pleine vitesse en chute libre ?"
|
||||||
|
|
||||||
|
Réponse (après une pause) : *"Heu... j'avais pas pensé. Il devrait pas se prendre les dégâts de chute non ?"*
|
||||||
|
|
||||||
|
Décision : **`GracePeriodMs` configurable (default 2500ms)**. Pendant la transition, on lisse l'inversion de gravité au lieu d'un flip instantané qui produit une accélération brutale et des dégâts de chute aberrants. En bonus : un toggle `FallDamage` (default false) pour les zones où on veut quand même que tomber ait un coût gameplay.
|
||||||
|
|
||||||
|
C'est le genre de détail qu'**un brief écrit ne fait jamais émerger**. Une vraie discussion, oui.
|
||||||
|
|
||||||
|
### 4. "Tu veux voir les zones quand tu es dedans ?"
|
||||||
|
|
||||||
|
Réponse : *"Oui en build c'est obligé sinon je sais plus où elles sont. Mais en live joueur faut rien voir."*
|
||||||
|
|
||||||
|
Décision : **trois modes de visualisation**.
|
||||||
|
- `Outline` — wireframe couleur configurable (`VisualColor`, default `#00FFFF`), pour le mode build
|
||||||
|
- `Particles` — bordures émettrices de particules (`Torch_Fire` par défaut), plus discret mais visible
|
||||||
|
- `None` — invisible, mode production
|
||||||
|
|
||||||
|
Toggle par région via la commande `/gravityflip toggle`. Build mode et live mode sur la même map sans rebuild du plugin.
|
||||||
|
|
||||||
|
### 5. "C'est un one-shot ou tu réutilises ?"
|
||||||
|
|
||||||
|
Réponse : *"One-shot pour l'event, mais si c'est bien fait je le garde."*
|
||||||
|
|
||||||
|
Décision déterminante : on traite ce projet comme **un plugin de production**, pas comme un script. Concrètement :
|
||||||
|
- Persistance JSON dans `Server/mods/Mythlane_GravityFlip/regions.json` (pas mémoire seule)
|
||||||
|
- Tick loop 10x/sec avec snapshots concurrents (lecture lock-free)
|
||||||
|
- Tests unitaires sur la logique pure (codec, géométrie AABB)
|
||||||
|
- Demo region auto-seed au premier démarrage pour onboarding instantané
|
||||||
|
- Documentation README EN pro, distribuable
|
||||||
|
|
||||||
|
**Surcoût vs version "quick & dirty"** : environ 30 % de temps en plus. **Bénéfice** : le client est passé de "j'ai besoin pour samedi" à "je l'utilise toujours, mes builders l'adorent". Le plugin est désormais publiable, monétisable, et donc devenu un actif partagé.
|
||||||
|
|
||||||
|
## L'architecture qui en est sortie
|
||||||
|
|
||||||
|
```
|
||||||
|
Player / NPC / Item
|
||||||
|
│
|
||||||
|
▼ (chaque tick, 10 Hz)
|
||||||
|
RegionTickLoop ◄─── snapshots de regions.json
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
GravityApplier + FallDamageGuard
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
effet par région
|
||||||
|
```
|
||||||
|
|
||||||
|
Le wand suit son propre cycle :
|
||||||
|
|
||||||
|
```
|
||||||
|
Player click → WandSelectionStore
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
/gravityflip define <name>
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Region registry → regions.json (auto-save)
|
||||||
|
```
|
||||||
|
|
||||||
|
Stack technique : **Java 25**, Hytale Plugin API officielle (`com.hypixel.hytale.plugin`), Gradle Shadow pour relocalisation Gson (évite les conflits stdlib), JUnit 5 pour les tests. Code source ~2 500 lignes, dont 30 % de tests.
|
||||||
|
|
||||||
|
### Le bout de code qui m'a coûté le plus de réflexion
|
||||||
|
|
||||||
|
Le **GracePeriodMs**. Pas du code, mais l'idée derrière : au lieu d'un flip binaire, on interpole la composante verticale de la vélocité sur une fenêtre glissante. Naïvement on écrit :
|
||||||
|
|
||||||
|
```java
|
||||||
|
// version naïve — produit des dégâts de chute aberrants
|
||||||
|
if (region.contains(entity)) {
|
||||||
|
entity.velocity.y = -entity.velocity.y; // flip instantané
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Avec grace period, on lisse la transition :
|
||||||
|
|
||||||
|
```java
|
||||||
|
// version production — entrée progressive
|
||||||
|
final long timeInRegion = now - entry.enteredAt();
|
||||||
|
final double gracePct = Math.min(1.0, timeInRegion / region.gracePeriodMs());
|
||||||
|
final double targetVy = -region.verticalForce(); // antigrav
|
||||||
|
entity.velocity.y = lerp(entity.velocity.y, targetVy, gracePct);
|
||||||
|
```
|
||||||
|
|
||||||
|
Trois lignes de plus, mais c'est ce qui fait la différence entre un plugin "marrant 30 secondes" et un plugin que les joueurs utilisent sans rage-quit.
|
||||||
|
|
||||||
|
## Ce que ce projet m'a appris (ou rappelé)
|
||||||
|
|
||||||
|
**Premièrement** : la valeur du dev senior n'est pas dans la rapidité de code. C'est dans la **série de questions** qui transforme un brief flou en spec actionnable. Si je n'avais pas posé la question 3 (chute libre), le client aurait livré l'event avec des dégâts de chute aberrants, et le plugin aurait été abandonné après le week-end.
|
||||||
|
|
||||||
|
**Deuxièmement** : un plugin Hytale qui se vend, ce n'est pas un script. C'est une **codebase Java production-grade** avec persistence, tests, doc, et un onboarding sub-5 minutes. Le client a payé 349€ (tier "Système Sur-Mesure"), pas 50€ Fiverr — et le surcoût est justifié par la qualité que le client va exploiter pendant des mois.
|
||||||
|
|
||||||
|
**Troisièmement** : chaque plugin que je code finit publié. GravityFlip est dispo gratuitement sur [Modtale](https://modtale.net/mod/gravity-flip) et bientôt sur CurseForge. Ça ne dilue pas la valeur de la commande client — ça **augmente** ma crédibilité auprès des futurs prospects qui cherchent un dev capable de livrer du code propre, et pas juste de coller des snippets StackOverflow.
|
||||||
|
|
||||||
|
## Tu as un projet Hytale en tête ?
|
||||||
|
|
||||||
|
Le pattern est toujours le même : on parle 30 minutes, je pose les 5-10 questions qui tuent les ambiguïtés, je te donne un devis ferme, et je livre. Les tarifs sont publics sur [/hytale](/hytale) — entre 149€ pour un plugin essentiel, 349€ pour un système complet, et 790€+ pour une infrastructure MMO custom.
|
||||||
|
|
||||||
|
Pas de Fiverr, pas de race-to-the-bottom. Juste un dev senior qui livre du code que tu utilises encore six mois plus tard.
|
||||||
|
|
||||||
|
[Demander un devis](/contact) · [Voir GravityFlip en action](https://modtale.net/mod/gravity-flip) · [Voir mes autres plugins](/projects)
|
||||||
@@ -1,160 +1,166 @@
|
|||||||
---
|
---
|
||||||
title: "Créer son premier plugin Hytale : guide pas à pas"
|
title: "Créer son premier plugin Hytale : guide pas à pas"
|
||||||
description: "Apprends à coder ton premier plugin Hytale en Kotlin : setup, event listener, et commande custom — avec le code source complet."
|
description: "Apprends à coder ton premier plugin Hytale en Java : setup IntelliJ + Gradle, manifest.json, event listener — avec le code source complet."
|
||||||
date: "2026-04-22"
|
date: "2026-04-22"
|
||||||
tags: ["hytale", "tutorial", "kotlin"]
|
tags: ["hytale", "tutorial", "java"]
|
||||||
draft: false
|
draft: false
|
||||||
---
|
---
|
||||||
|
|
||||||
## Pourquoi Hytale, pourquoi maintenant
|
## Pourquoi Hytale, pourquoi maintenant
|
||||||
|
|
||||||
La première fois que j'ai branché un serveur Hytale en local, j'ai compris que cette plateforme allait rejouer exactement ce que Minecraft a fait avec Bukkit en 2012 — sauf qu'en 2026, on démarre avec Kotlin, une API typée, et un SDK pensé dès le jour 1 pour les développeurs de plugins. Autrement dit : fenêtre d'opportunité grande ouverte pour qui veut se positionner tôt.
|
La première fois que j'ai branché un serveur Hytale en local, j'ai compris que cette plateforme allait rejouer exactement ce que Minecraft a fait avec Bukkit en 2012 — sauf qu'en 2026, on démarre avec Java 25, une API officielle fournie par Hypixel, et un template GitHub maintenu par la communauté HytaleModding. Autrement dit : fenêtre d'opportunité grande ouverte pour qui veut se positionner tôt, pendant l'early access.
|
||||||
|
|
||||||
Dans ce guide, je te montre comment j'ai construit mon premier plugin Hytale : un module minimal qui écoute l'arrivée d'un joueur et ajoute une commande `/hello`. Rien de spectaculaire, mais c'est exactement le squelette dont tu as besoin pour itérer sur des features plus ambitieuses. Si tu préfères déléguer et faire [commissionner un plugin Hytale sur-mesure](/hytale) plutôt que de l'écrire toi-même, c'est aussi une option — mais si tu es là, tu as probablement envie de mettre les mains dedans.
|
Dans ce guide, je te montre comment j'ai construit mon premier plugin Hytale : un module minimal qui écoute l'arrivée d'un joueur et loggue l'événement. Rien de spectaculaire, mais c'est exactement le squelette dont tu as besoin pour itérer sur des features plus ambitieuses. Si tu préfères déléguer et faire [commissionner un plugin Hytale sur-mesure](/hytale) plutôt que de l'écrire toi-même, c'est aussi une option — mais si tu es là, tu as probablement envie de mettre les mains dedans.
|
||||||
|
|
||||||
::alert{type="info"}
|
::alert{type="info"}
|
||||||
**Note API** — Les noms d'API cités ici sont basés sur la documentation publique du SDK Hytale 2026. Ils peuvent évoluer au lancement officiel — adapte selon la doc la plus récente au moment où tu lis ceci.
|
**Note API** — Hytale est en early access en 2026. L'API plugin (package `com.hypixel.hytale.plugin`) est officiellement fournie par Hypixel, mais la doc officielle GitBook est encore en cours de rédaction. Les ressources communautaires de référence sont `hytalemodding.dev` et `britakee-studios.gitbook.io/hytale-modding-documentation`. Les noms d'events exacts peuvent évoluer — adapte selon la doc la plus récente au moment où tu lis ceci.
|
||||||
::
|
::
|
||||||
|
|
||||||
## Prérequis
|
## Prérequis
|
||||||
|
|
||||||
Avant de cloner quoi que ce soit, assure-toi d'avoir :
|
Avant de cloner quoi que ce soit, assure-toi d'avoir :
|
||||||
|
|
||||||
- **JDK 17+** (je recommande Temurin 21 — le SDK Hytale 2026 tourne dessus sans broncher)
|
- **JDK 25** — la version assumée par la doc plugin Hytale actuelle. Temurin fait très bien l'affaire.
|
||||||
- **IntelliJ IDEA Community Edition** — gratuit, et l'intégration Gradle + Kotlin y est excellente
|
- **IntelliJ IDEA Community Edition** — gratuit, c'est l'IDE recommandé par HytaleModding, et l'intégration Gradle + Java y est irréprochable
|
||||||
- **Gradle 8.x** (IntelliJ le bundle, pas besoin de l'installer séparément)
|
- **Gradle** (bundlé par IntelliJ, pas besoin d'install séparée)
|
||||||
- Des bases solides en **Kotlin** : classes, lambdas, annotations, nullabilité
|
- Des bases solides en **Java moderne** : classes, annotations, génériques, lambdas
|
||||||
|
|
||||||
Je pars du principe que tu as déjà un serveur Hytale local qui démarre. Si ce n'est pas le cas, la doc officielle du serveur est ton point de départ — ce guide se concentre sur le plugin, pas sur l'hébergement.
|
Je pars du principe que tu as déjà un serveur Hytale local qui démarre. Si ce n'est pas le cas, le template plugin disponible sur `hytalemodding.dev` te pointe vers la bonne version serveur à utiliser — ce guide se concentre sur le plugin, pas sur l'hébergement.
|
||||||
|
|
||||||
## Scaffold du projet
|
## Scaffold du projet
|
||||||
|
|
||||||
L'arborescence minimale ressemble à ceci :
|
Le plus simple est de partir du template officiel HytaleModding. L'arborescence minimale ressemble à ceci :
|
||||||
|
|
||||||
```
|
```
|
||||||
my-first-plugin/
|
my-first-plugin/
|
||||||
├── build.gradle.kts
|
├── build.gradle
|
||||||
├── src/
|
├── settings.gradle
|
||||||
│ └── main/
|
├── gradle.properties
|
||||||
│ ├── kotlin/
|
└── src/
|
||||||
│ │ └── com/example/myplugin/
|
└── main/
|
||||||
│ │ └── MyPlugin.kt
|
├── java/
|
||||||
│ └── resources/
|
│ └── com/example/myplugin/
|
||||||
│ └── plugin.toml
|
│ └── MyPlugin.java
|
||||||
|
└── resources/
|
||||||
|
└── manifest.json
|
||||||
```
|
```
|
||||||
|
|
||||||
Le fichier `build.gradle.kts` minimal que j'utilise :
|
Le `settings.gradle` déclare simplement le nom du projet :
|
||||||
|
|
||||||
```kotlin
|
```groovy
|
||||||
plugins {
|
rootProject.name = 'my-first-plugin'
|
||||||
kotlin("jvm") version "2.0.0"
|
```
|
||||||
id("com.github.johnrengelman.shadow") version "8.1.1"
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
Le `gradle.properties` fixe le group et la version :
|
||||||
mavenCentral()
|
|
||||||
maven("https://repo.hytale.io/public")
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
```properties
|
||||||
compileOnly("io.hytale:hytale-api:1.0.0")
|
group=com.example
|
||||||
}
|
version=1.0.0
|
||||||
|
```
|
||||||
|
|
||||||
tasks {
|
Le fichier `manifest.json` — **c'est ce fichier qui remplace le `plugin.yml` du monde Bukkit** — déclare ton plugin au serveur Hytale. Il vit dans `src/main/resources/` et contient au minimum :
|
||||||
build { dependsOn("shadowJar") }
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Group": "com.example",
|
||||||
|
"Name": "MyFirstPlugin",
|
||||||
|
"Main": "com.example.myplugin.MyPlugin",
|
||||||
|
"Version": "1.0.0",
|
||||||
|
"Description": "Mon premier plugin Hytale",
|
||||||
|
"Authors": ["toi"],
|
||||||
|
"ServerVersion": "*"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Le manifest `plugin.toml` déclare ton plugin au serveur :
|
Pas de boilerplate inutile. Le champ `Main` doit pointer vers la classe qui étend `JavaPlugin` — c'est littéralement la seule configuration obligatoire côté runtime.
|
||||||
|
|
||||||
```toml
|
|
||||||
name = "MyPlugin"
|
|
||||||
version = "0.1.0"
|
|
||||||
main = "com.example.myplugin.MyPlugin"
|
|
||||||
authors = ["toi"]
|
|
||||||
```
|
|
||||||
|
|
||||||
C'est tout. Aucun boilerplate ne t'attend avant de pouvoir écrire la première ligne utile.
|
|
||||||
|
|
||||||
## Premier event listener — le cœur du plugin
|
## Premier event listener — le cœur du plugin
|
||||||
|
|
||||||
Voici la classe principale. C'est le fichier sur lequel tu vas passer le plus de temps dans les premières semaines, donc prends-le au sérieux :
|
Voici la classe principale. Elle étend `JavaPlugin` du package officiel `com.hypixel.hytale.plugin`, avec la signature de constructeur **exactement** telle qu'exigée par l'API :
|
||||||
|
|
||||||
```kotlin
|
```java
|
||||||
package com.example.myplugin
|
package com.example.myplugin;
|
||||||
|
|
||||||
import io.hytale.api.HytalePlugin
|
import com.hypixel.hytale.plugin.JavaPlugin;
|
||||||
import io.hytale.api.event.EventHandler
|
import com.hypixel.hytale.plugin.JavaPluginInit;
|
||||||
import io.hytale.api.event.player.PlayerJoinEvent
|
import jakarta.annotation.Nonnull;
|
||||||
|
|
||||||
class MyPlugin : HytalePlugin() {
|
public class MyPlugin extends JavaPlugin {
|
||||||
|
|
||||||
override fun onEnable() {
|
public MyPlugin(@Nonnull JavaPluginInit init) {
|
||||||
logger.info("MyPlugin enabled")
|
super(init);
|
||||||
server.events.register(this)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDisable() {
|
@Override
|
||||||
logger.info("MyPlugin disabled — cleaning up")
|
public void onEnable() {
|
||||||
|
getLogger().info("MyPlugin enabled");
|
||||||
|
getServer().getPluginManager().registerEvents(new JoinListener(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@Override
|
||||||
fun onPlayerJoin(event: PlayerJoinEvent) {
|
public void onDisable() {
|
||||||
val player = event.player
|
getLogger().info("MyPlugin disabled — cleaning up");
|
||||||
player.sendMessage("Welcome to the server, ${player.name}!")
|
|
||||||
logger.info("Player ${player.name} joined at ${event.timestamp}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Décortique rapidement :
|
Décortique rapidement :
|
||||||
|
|
||||||
- `HytalePlugin` est la classe de base fournie par l'API. Elle expose `logger`, `server`, et les hooks de cycle de vie (`onEnable` / `onDisable`).
|
- `JavaPlugin` est la classe de base fournie par l'API Hypixel. Elle expose `getLogger()`, `getServer()`, et les hooks de cycle de vie (`onEnable` / `onDisable`).
|
||||||
- `server.events.register(this)` indique au serveur que cette instance contient des méthodes `@EventHandler`. Sans cette ligne, ton listener ne sera jamais appelé — erreur classique que j'ai faite la première fois.
|
- Le **constructeur avec `@Nonnull JavaPluginInit init`** est obligatoire — sans cette signature exacte, le plugin manager ne parvient pas à instancier ta classe au chargement. C'est l'erreur que j'ai faite la première fois : oublier le constructeur et passer 30 minutes à debugger un `NoSuchMethodException`.
|
||||||
- L'annotation `@EventHandler` marque la méthode comme cible d'un event. Le type `PlayerJoinEvent` en paramètre fait office de filtre : seul cet event déclenche la méthode.
|
- `getServer().getPluginManager().registerEvents(...)` enregistre un listener externe auprès du serveur. L'API est volontairement proche de Bukkit dans sa forme — les devs qui viennent de Spigot/Paper retrouvent leurs repères, même si le package et l'implémentation sont propres à Hypixel.
|
||||||
- `event.player` expose un objet `Player` avec `sendMessage`, `teleport`, `inventory`, etc.
|
|
||||||
|
|
||||||
Compile, démarre le serveur, connecte-toi : tu devrais voir le message de bienvenue dans le chat. Si ce n'est pas le cas, vérifie les logs serveur — une `ClassNotFoundException` est généralement un souci de shadow jar mal configuré.
|
Le listener lui-même vit dans une classe séparée — plus propre et plus testable :
|
||||||
|
|
||||||
## Ajouter une commande custom
|
```java
|
||||||
|
package com.example.myplugin;
|
||||||
|
|
||||||
Écouter des events, c'est la moitié du job. L'autre moitié, c'est de laisser les joueurs interagir avec ton plugin via des commandes. Ajoute cette méthode dans la même classe :
|
import com.hypixel.hytale.plugin.event.EventHandler;
|
||||||
|
import com.hypixel.hytale.plugin.event.Listener;
|
||||||
|
import com.hypixel.hytale.plugin.event.player.PlayerJoinEvent;
|
||||||
|
|
||||||
```kotlin
|
public class JoinListener implements Listener {
|
||||||
import io.hytale.api.command.Command
|
|
||||||
import io.hytale.api.command.CommandSender
|
|
||||||
|
|
||||||
@Command(name = "hello", description = "Says hello back")
|
@EventHandler
|
||||||
fun onHelloCommand(sender: CommandSender, args: List<String>) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
val target = args.firstOrNull() ?: sender.name
|
var player = event.getPlayer();
|
||||||
sender.sendMessage("Hello, $target!")
|
player.sendMessage("Welcome to the server, " + player.getName() + "!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Tu peux maintenant taper `/hello` ou `/hello Killian` en jeu. L'annotation `@Command` enregistre la commande automatiquement — pas besoin de l'inscrire dans `plugin.toml`. Si tu veux de la validation stricte sur les arguments, `CommandSender` expose `hasPermission(node)` pour restreindre l'accès.
|
::alert{type="warning"}
|
||||||
|
**Noms d'events approximatifs** — `PlayerJoinEvent` est un nom plausible et conforme au style Bukkit-like que la doc laisse entrevoir, mais tous les events exacts ne sont pas encore catalogués publiquement. Vérifie la classe exacte disponible dans ta version du SDK Hytale avant d'expédier en prod.
|
||||||
|
::
|
||||||
|
|
||||||
|
Compile, démarre le serveur, connecte-toi : tu devrais voir le message de bienvenue dans le chat. Si ce n'est pas le cas, vérifie les logs serveur — un `NoSuchMethodException` sur le constructeur est quasi certain si tu as oublié la signature `(@Nonnull JavaPluginInit init)`.
|
||||||
|
|
||||||
## Build + deploy local
|
## Build + deploy local
|
||||||
|
|
||||||
Le cycle que je fais 20 fois par jour :
|
Le cycle que je fais 20 fois par jour :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./gradlew shadowJar
|
./gradlew build
|
||||||
cp build/libs/my-first-plugin-all.jar ~/hytale-server/plugins/
|
cp build/libs/my-first-plugin-1.0.0.jar ~/hytale-server/plugins/
|
||||||
# Puis dans la console serveur :
|
# Puis redémarre le serveur, ou utilise la commande de reload disponible
|
||||||
> reload MyPlugin
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Le flag `shadowJar` empaquette toutes tes dépendances runtime dans un seul `.jar`, ce qui évite les galères de classpath. Sur des plugins plus ambitieux — persistance SQLite, API REST embarquée, intégrations Discord — c'est vite indispensable. Si ce genre de scope te parle mais que tu préfères déléguer la partie développement, tu peux toujours [commissionner un plugin Hytale sur-mesure](/hytale) auprès de quelqu'un qui fait ça au quotidien.
|
Le `.jar` généré par `./gradlew build` dans `build/libs/` est directement déposable dans le dossier `plugins/` de ton serveur Hytale. Le nom suit le pattern `{rootProject.name}-{version}.jar` défini dans tes fichiers Gradle. Si ton plugin grossit — persistance, intégrations externes, libs tierces — tu passeras sur un `shadowJar` pour embarquer les dépendances, mais pour un premier plugin la config de base suffit largement. Si ce genre de scope te parle mais que tu préfères déléguer la partie développement, tu peux toujours [commissionner un plugin Hytale sur-mesure](/hytale) auprès de quelqu'un qui fait ça au quotidien.
|
||||||
|
|
||||||
## Prochaines étapes
|
## Prochaines étapes
|
||||||
|
|
||||||
Une fois ton premier plugin qui tourne, les pistes naturelles sont :
|
Une fois ton premier plugin qui tourne, les pistes naturelles sont :
|
||||||
|
|
||||||
- Écouter plus d'events : `BlockBreakEvent`, `PlayerChatEvent`, `EntityDamageEvent` — la liste complète est dans le package `io.hytale.api.event`.
|
- Écouter plus d'events — la liste exacte des classes d'events disponibles est à récupérer via l'auto-complétion IntelliJ sur le package `com.hypixel.hytale.plugin.event`.
|
||||||
- Persister de la donnée : commence avec un simple `JsonFile` dans le dossier plugin, passe à SQLite quand tu dépasses 50 Ko de state.
|
- Persister de la donnée : commence avec un simple fichier JSON dans le dossier du plugin, passe à SQLite quand tu dépasses 50 Ko de state.
|
||||||
- Ajouter des permissions : l'API Hytale embarque un système de nodes type `myplugin.admin.reload` qui s'intègre avec les groupes serveur.
|
- Structurer ton code : un plugin qui grossit mérite une séparation claire listener / service / repository dès que tu passes les 300 lignes.
|
||||||
- Profiler tes handlers : un event listener lent impacte directement le TPS du serveur. `logger.info` avec timestamps est ton premier outil, puis Flight Recorder pour le sérieux.
|
- Profiler tes handlers : un event listener lent impacte directement le TPS du serveur. `getLogger().info` avec timestamps est ton premier outil, puis Flight Recorder quand tu passes en prod.
|
||||||
|
|
||||||
|
## Pour aller plus loin
|
||||||
|
|
||||||
|
- [hytalemodding.dev](https://hytalemodding.dev) — template plugin et guides FR+EN
|
||||||
|
- [britakee-studios.gitbook.io/hytale-modding-documentation](https://britakee-studios.gitbook.io/hytale-modding-documentation) — GitBook communautaire, la source la plus à jour sur l'API
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
||||||
Un plugin Hytale, c'est essentiellement une classe Kotlin qui hérite de `HytalePlugin`, enregistre des listeners, et expose des commandes. Tout le reste — persistance, UI, intégrations — se construit sur ce socle de 50 lignes. Si tu as suivi jusqu'ici, tu as déjà la base technique pour livrer n'importe quelle idée que tu as en tête. Code un premier truc moche, fais-le tourner, itère. C'est toujours comme ça que ça commence.
|
Un plugin Hytale, c'est essentiellement une classe Java qui étend `JavaPlugin`, expose le bon constructeur, enregistre des listeners via le `PluginManager`, et se décrit dans un `manifest.json`. Tout le reste — persistance, intégrations, UI — se construit sur ce socle de 50 lignes. Si tu as suivi jusqu'ici, tu as déjà la base technique pour livrer n'importe quelle idée que tu as en tête pendant l'early access. Code un premier truc moche, fais-le tourner, itère. C'est toujours comme ça que ça commence.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Développement de plugins Hytale en 2026 : état de l'art et perspectives"
|
title: "Développement de plugins Hytale en 2026 : état de l'art et perspectives"
|
||||||
description: "Tour d'horizon de l'écosystème plugin Hytale en 2026 : stack technique, patterns modernes, et ce qui attend la communauté."
|
description: "Tour d'horizon de l'écosystème plugin Hytale en 2026 : choix du Java, API officielle Hypixel, patterns modernes et perspectives."
|
||||||
date: "2026-04-21"
|
date: "2026-04-21"
|
||||||
tags: ["hytale", "industry", "analysis"]
|
tags: ["hytale", "industry", "analysis"]
|
||||||
draft: false
|
draft: false
|
||||||
@@ -8,87 +8,110 @@ draft: false
|
|||||||
|
|
||||||
## Hytale en 2026, où en est-on ?
|
## Hytale en 2026, où en est-on ?
|
||||||
|
|
||||||
Il y a quelques années, parler de « dev plugin Hytale » signifiait bricoler sur des builds préliminaires, relire trois fois les release notes du SDK avant d'oser toucher à une API, et prier pour qu'un event ne change pas de nom la semaine suivante. En 2026, le paysage a changé de texture : le SDK officiel s'est stabilisé, les patterns de production ont émergé, et la ligne entre serveur communautaire et studio indie commercial s'est brouillée.
|
Il y a quelques années, parler de « dev plugin Hytale » signifiait bricoler sur des builds préliminaires, relire trois fois les release notes avant d'oser toucher à une API, et prier pour qu'un event ne change pas de nom la semaine suivante. En 2026, le paysage a changé de texture : Hytale est entré en early access, Hypixel a publié son API plugin officielle (package `com.hypixel.hytale.plugin`), et la communauté a fini par converger autour d'un template GitHub maintenu et d'une GitBook communautaire qui sert de doc de référence en attendant la doc officielle.
|
||||||
|
|
||||||
Je développe moi-même [des plugins Hytale sur commande](/hytale) depuis les premières betas, et ce que je constate chez mes clients ressemble de moins en moins à du scripting de hobbyiste. Les serveurs qui ambitionnent une audience réelle — économie, PvP compétitif, RP structuré — demandent aujourd'hui la même rigueur que n'importe quelle codebase Kotlin côté serveur : tests, CI, versionnage, revues.
|
Je développe moi-même [des plugins Hytale sur commande](/hytale) depuis les premières previews, et ce que je constate chez mes clients ressemble de moins en moins à du scripting de hobbyiste. Les serveurs qui ambitionnent une audience réelle — économie, PvP compétitif, RP structuré — demandent aujourd'hui la même rigueur que n'importe quelle codebase JVM côté serveur : tests, CI, versionnage, revues.
|
||||||
|
|
||||||
La thèse de cet article est simple : 2026 est l'année où le développement Hytale devient un vrai métier, avec ses conventions, ses outils, et ses pièges. Voici ce que j'observe en prod, ce qui marche, et ce qu'il faut arrêter de faire.
|
La thèse de cet article est simple : 2026, c'est l'année où Hytale passe d'un objet de spéculation à une plateforme de dev concrète, avec son langage officiel (Java), ses conventions d'API, et ses premiers patterns stabilisés. Voici ce que j'observe.
|
||||||
|
|
||||||
## La stack 2026 : Kotlin, coroutines, et outillage mature
|
## Le choix du Java et ce qu'il signale
|
||||||
|
|
||||||
Kotlin est la lingua franca côté plugin. Le Java résiduel survit dans les vieilles codebases portées depuis d'autres écosystèmes, mais tout nouveau projet sérieux démarre en Kotlin/JVM. Le tooling suit : Gradle Kotlin DSL est devenu la norme, IntelliJ IDEA reste l'IDE de référence, et la chaîne de test JUnit 5 + MockK couvre la majorité des besoins unitaires et d'intégration.
|
Hypixel a tranché : l'API plugin Hytale est en **Java**, pas en Kotlin. Ce choix, à la lecture du template officiel `hytalemodding.dev` et de la GitBook communautaire, est délibéré et cohérent. La classe de base `JavaPlugin` (package `com.hypixel.hytale.plugin`) reprend visuellement le pattern que tout dev venant de Bukkit/Spigot reconnaît au premier coup d'œil : `onEnable()`, `onDisable()`, enregistrement de listeners via `getServer().getPluginManager()`. La ressemblance n'est pas un accident — c'est un choix d'onboarding. Un développeur Paper habitué peut lire le template et être productif en quelques heures.
|
||||||
|
|
||||||
Le changement de texture le plus visible, c'est l'adoption systématique des coroutines pour tout ce qui touche à de l'I/O. Les anciens réflexes hérités du monde Bukkit — tout synchrone, tout sur le thread principal, quelques `Thread` manuels pour les trucs lents — ont laissé la place à des scopes dédiés, proprement cancellés au shutdown du plugin.
|
Autre signal fort : la signature exacte du constructeur est **imposée** (`public YourPlugin(@Nonnull JavaPluginInit init)`), et le manifest vit dans un `manifest.json` (pas `plugin.yml`) avec des champs capitalisés (`Group`, `Name`, `Main`, `Version`, `Authors`, `ServerVersion`). Ce sont les deux endroits où Hypixel s'écarte volontairement du legacy Bukkit — assez pour marquer une identité, pas assez pour perdre la base de devs existante.
|
||||||
|
|
||||||
Voici un pattern typique que je pousse chez mes clients : un event handler qui déclenche une lecture de profil async sans jamais bloquer le tick principal.
|
Le Java 25 assumé par la doc permet aussi à l'API de s'appuyer sur les features modernes du langage. Records pour modéliser les events, sealed interfaces pour les hiérarchies fermées, pattern matching dans les switch, et virtual threads (stables depuis Java 21) pour l'I/O async sans ramener une lib coroutines. C'est un Java 2026, pas un Java 2016 — et ça se sent dans la qualité des signatures d'API que la communauté documente.
|
||||||
|
|
||||||
```kotlin
|
## Un squelette de plugin moderne
|
||||||
package com.example.ecoplugin
|
|
||||||
|
|
||||||
import io.hytale.api.HytalePlugin
|
Voici le genre de squelette que je pousse chez mes clients qui démarrent un projet ambitieux : un plugin qui tire parti des records, des sealed interfaces et des virtual threads pour traiter de l'I/O sans jamais bloquer le tick serveur.
|
||||||
import io.hytale.api.event.EventHandler
|
|
||||||
import io.hytale.api.event.player.PlayerJoinEvent
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.SupervisorJob
|
|
||||||
import kotlinx.coroutines.cancel
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
|
|
||||||
class EcoPlugin : HytalePlugin() {
|
```java
|
||||||
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
|
package com.example.ecoplugin;
|
||||||
|
|
||||||
@EventHandler
|
import com.hypixel.hytale.plugin.JavaPlugin;
|
||||||
fun onJoin(event: PlayerJoinEvent) {
|
import com.hypixel.hytale.plugin.JavaPluginInit;
|
||||||
scope.launch {
|
import jakarta.annotation.Nonnull;
|
||||||
val profile = profileRepo.fetch(event.player.uuid)
|
|
||||||
event.player.sendMessage("Welcome back, balance: ${profile.balance}")
|
import java.util.concurrent.ExecutorService;
|
||||||
}
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
|
public class EcoPlugin extends JavaPlugin {
|
||||||
|
|
||||||
|
// Type fermé et modélisé — pas d'énum stringly-typed
|
||||||
|
sealed interface EcoEvent permits Deposit, Withdraw, Transfer {}
|
||||||
|
record Deposit(String playerId, long amount) implements EcoEvent {}
|
||||||
|
record Withdraw(String playerId, long amount) implements EcoEvent {}
|
||||||
|
record Transfer(String from, String to, long amount) implements EcoEvent {}
|
||||||
|
|
||||||
|
// Virtual threads : un pool « infini » pour l'I/O, zéro coût par tâche
|
||||||
|
private final ExecutorService io = Executors.newVirtualThreadPerTaskExecutor();
|
||||||
|
|
||||||
|
public EcoPlugin(@Nonnull JavaPluginInit init) {
|
||||||
|
super(init);
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDisable() {
|
@Override
|
||||||
scope.cancel()
|
public void onEnable() {
|
||||||
|
getLogger().info("EcoPlugin enabled");
|
||||||
|
getServer().getPluginManager().registerEvents(new EcoListener(this), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
io.shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void dispatch(EcoEvent event) {
|
||||||
|
io.submit(() -> {
|
||||||
|
switch (event) {
|
||||||
|
case Deposit d -> getLogger().info("deposit " + d.amount() + " for " + d.playerId());
|
||||||
|
case Withdraw w -> getLogger().info("withdraw " + w.amount() + " for " + w.playerId());
|
||||||
|
case Transfer t -> getLogger().info("transfer " + t.amount() + " " + t.from() + "→" + t.to());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Trois détails qui changent tout : le `SupervisorJob` qui empêche une coroutine foireuse de tuer ses sœurs, le `Dispatchers.IO` pour ne pas squatter le pool par défaut, et le `scope.cancel()` dans `onDisable()` qui garantit qu'on laisse la JVM propre au reload. Rien de révolutionnaire — juste les bases d'une coroutine-hygiene que l'écosystème a fini par intérioriser.
|
Trois choses méritent qu'on s'y arrête. D'abord, la **sealed interface** `EcoEvent` avec ses trois records : le compilateur vérifie l'exhaustivité du `switch` expression, et l'ajout d'un nouveau type d'event casse la compilation là où il faut — c'est le genre de filet que Kotlin offrait déjà avec `sealed class`, et que Java a fini par ramener proprement. Ensuite, les **records** : zéro boilerplate, égalité structurelle par défaut, immutabilité, lisibilité parfaite. Enfin, `newVirtualThreadPerTaskExecutor()` : un exécuteur qui spawne un virtual thread par tâche, quasi-gratuit, parfait pour de l'I/O qui ne doit jamais toucher le tick serveur principal.
|
||||||
|
|
||||||
::alert{type="tip"}
|
::alert{type="tip"}
|
||||||
**Astuce** — L'API Hytale publique continue d'évoluer ; les noms exacts de classes (`HytalePlugin`, `PlayerJoinEvent`) peuvent bouger entre versions majeures. Le pattern — scope lifecycle-aware, dispatcher I/O, cancel au shutdown — reste valide indépendamment du naming.
|
**Astuce** — Les noms exacts de classes d'events (`PlayerJoinEvent`, etc.) peuvent encore bouger en early access. Le pattern — exécuteur virtual-thread pour l'I/O, records pour la donnée immutable, sealed interface pour les hiérarchies d'events — reste valide indépendamment du naming final.
|
||||||
::
|
::
|
||||||
|
|
||||||
## Patterns modernes : ce qui a remplacé les mauvaises habitudes Bukkit-era
|
## Patterns modernes : ce qui a remplacé les mauvaises habitudes Bukkit-era
|
||||||
|
|
||||||
Les trois changements de pratique les plus nets que je vois sur les codebases sérieuses :
|
Les trois changements de pratique les plus nets que je vois sur les codebases sérieuses :
|
||||||
|
|
||||||
**Injection de dépendances explicite.** Plus de singletons globaux accessibles depuis n'importe où. Soit on utilise un micro-container type `Koin`, soit on injecte par constructeur à la main. Les event handlers reçoivent leurs collaborateurs plutôt que de les récupérer via une variable statique — ce qui rend le code testable sans monkey-patching.
|
**Injection de dépendances explicite.** Plus de singletons globaux accessibles depuis n'importe où. Soit on utilise un micro-container (Guice reste populaire côté Java), soit on injecte par constructeur à la main. Les listeners reçoivent leurs collaborateurs plutôt que de les récupérer via un champ statique — ce qui rend le code testable sans monkey-patching.
|
||||||
|
|
||||||
**Séparation handler / logique métier.** Un `@EventHandler` devient un adaptateur fin : il extrait les données pertinentes de l'event, appelle un service métier pur, et applique le résultat. La logique vit dans des classes qu'on teste sans instancier la moitié du SDK.
|
**Séparation listener / logique métier.** Un `@EventHandler` devient un adaptateur fin : il extrait les données pertinentes de l'event, appelle un service métier pur, et applique le résultat. La logique vit dans des classes qu'on teste sans instancier la moitié du SDK.
|
||||||
|
|
||||||
**Config typée.** Fini le parsing manuel de YAML dans une `Map<String, Any>`. `kotlinx.serialization` lit le fichier en une data class, et toute clé manquante ou typée incorrectement pète au chargement — pas en prod trois jours plus tard quand un joueur trigger le bon path.
|
**Config typée.** Fini le parsing manuel dans une `Map<String, Object>`. Jackson ou Gson désérialise vers des records, et toute clé manquante ou mal typée pète au chargement — pas en prod trois jours plus tard quand un joueur trigger le bon path.
|
||||||
|
|
||||||
**Tests.** Unitaires sur la logique métier, intégration sur les handlers avec un SDK mocké. Ce n'est plus une excentricité ; c'est ce qui distingue un plugin commercial d'un script du weekend.
|
**Tests.** JUnit 5 sur la logique métier, tests d'intégration sur les listeners avec un SDK mocké (Mockito). Ce n'est plus une excentricité — c'est ce qui distingue un plugin commercial d'un script du weekend.
|
||||||
|
|
||||||
## Écosystème : libs et SDKs qui comptent
|
## Écosystème : libs et ressources qui comptent
|
||||||
|
|
||||||
Le SDK officiel Hytale reste le socle. Autour, l'écosystème est plus fragmenté que celui de Paper/Spigot à maturité équivalente, mais quelques hubs GitHub actifs et des Discord de devs font le tri : wrappers Kotlin-idiomatiques sur les API Java-first, DSLs pour la config de commandes, helpers pour la persistence.
|
L'API officielle Hypixel est le socle. Autour, l'écosystème est plus jeune que Paper/Spigot à maturité équivalente, mais deux hubs tiennent la route : `hytalemodding.dev` (template plugin maintenu, guides FR+EN) et la GitBook `britakee-studios.gitbook.io/hytale-modding-documentation` (la doc communautaire la plus à jour tant que la doc officielle est encore en construction). Entre les deux, un dev motivé trouve de quoi démarrer proprement.
|
||||||
|
|
||||||
Les anti-patterns récurrents que j'observe en audit de codebase client : handlers qui font du blocking I/O sur le thread principal, gestion d'état global partagé sans synchronisation, config en `HashMap` non typée, absence totale de logs structurés. Rien de neuf — ce sont les mêmes plaies que dans tout écosystème plugin JVM, avec la même solution : appliquer discipline, typage, et isolation.
|
Les anti-patterns récurrents que j'observe en audit de codebase client : handlers qui font du blocking I/O sur le thread principal, gestion d'état global partagé sans synchronisation, config en `HashMap` non typée, absence totale de logs structurés. Rien de neuf — ce sont les mêmes plaies que dans tout écosystème plugin JVM, avec la même solution : discipline, typage, isolation.
|
||||||
|
|
||||||
## Ce que l'avenir apporte
|
## Ce que l'avenir apporte
|
||||||
|
|
||||||
Quelques tendances qui me semblent robustes pour les 12-18 prochains mois :
|
Quelques tendances qui me semblent robustes pour les 12-18 prochains mois :
|
||||||
|
|
||||||
**Scripting côté client.** Si la plateforme étend ses hooks côté client comme elle l'a laissé entendre, toute une classe de plugins cosmétiques / UX devient possible sans hack côté serveur. À surveiller.
|
**Stabilisation de la doc officielle.** La GitBook Hypixel officielle reste en rédaction ; à mesure qu'elle se remplit, on peut s'attendre à voir converger les nomenclatures d'events, les API de commandes, et les conventions de packaging.
|
||||||
|
|
||||||
**Formats de packaging plus rigoureux.** Les plugins publiés commencent à ressembler à de vrais artefacts Gradle : métadonnées riches, dépendances déclarées, signatures. Les plateformes de distribution suivent.
|
**Émergence de gameplay loops signature.** Hytale en early access laisse voir les premières grosses expériences serveur — économies cross-world, mini-games persistants, modes compétitifs. Les plugins qui les portent sont les laboratoires où les patterns de demain vont se forger.
|
||||||
|
|
||||||
**Professionnalisation des modèles économiques.** La commission one-shot reste dominante, mais je vois émerger des arrangements rev-share sur serveurs monétisés, des contrats de maintenance annuels, et des licences B2B pour les features complexes. Si tu veux externaliser le dev d'un plugin ambitieux plutôt que l'empiler dans un backlog interne, je propose [du développement Hytale sur commande](/hytale) — patterns modernes et config typée inclus par défaut.
|
**Professionnalisation des modèles économiques.** La commission one-shot reste dominante, mais je vois émerger des arrangements rev-share sur serveurs monétisés, des contrats de maintenance annuels, et des licences B2B pour les features complexes. Si tu veux externaliser le dev d'un plugin ambitieux plutôt que l'empiler dans un backlog interne, je propose [du développement Hytale sur commande](/hytale) — patterns modernes et API officielle maîtrisée inclus par défaut.
|
||||||
|
|
||||||
**Outillage de debug / profiling.** Encore le parent pauvre. Les meilleurs teams écrivent leur propre tooling ; attendez-vous à voir des libs publiques combler ce vide.
|
**Outillage de debug / profiling.** Encore le parent pauvre. Les meilleures teams écrivent leur propre tooling ; attendez-vous à voir des libs publiques combler ce vide au fil de l'early access.
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
||||||
2026 n'est pas l'année du grand bouleversement Hytale — c'est l'année de la consolidation. Les patterns existent, les outils sont là, les attentes des serveurs clients ont monté d'un cran. Le plugin « weekend script » continuera d'exister et d'amuser ses auteurs, mais la couche au-dessus — plugins qu'on vend, qu'on maintient, qu'on intègre à un serveur commercial — suit désormais les mêmes standards que n'importe quel service Kotlin sérieux.
|
2026 n'est pas l'année du grand bouleversement Hytale — c'est l'année de la consolidation. L'API officielle est là, le Java est entériné comme langage de référence, les patterns modernes (records, sealed, virtual threads) redonnent au langage une expressivité qui justifie pleinement le choix. Les outils et la documentation communautaire comblent les trous que la doc officielle laisse encore.
|
||||||
|
|
||||||
Pour les devs qui hésitent à sauter le pas : c'est le bon moment. L'API s'est calmée, la communauté sait ce qu'elle fait, et les serveurs sont demandeurs. Ce qui était un hobby obscur il y a trois ans est devenu une niche technique légitime — avec tout ce que ça implique de rigueur, mais aussi d'opportunités.
|
Pour les devs qui hésitent à sauter le pas : c'est le bon moment. L'API a une identité claire, la communauté sait ce qu'elle fait, et les serveurs en early access sont demandeurs. Ce qui était un hobby obscur il y a trois ans est devenu une niche technique légitime — avec tout ce que ça implique de rigueur, mais aussi d'opportunités.
|
||||||
|
|||||||
+148
-153
@@ -4,25 +4,25 @@
|
|||||||
"projects": "Projects",
|
"projects": "Projects",
|
||||||
"about": "About",
|
"about": "About",
|
||||||
"contact": "Contact",
|
"contact": "Contact",
|
||||||
"fiverr": "Fiverr",
|
|
||||||
"hytale": "Hytale",
|
"hytale": "Hytale",
|
||||||
"blog": "Blog"
|
"blog": "Blog"
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"copyright": "© 2026 Killian' DAL-CIN",
|
"copyright": "© 2026 Killian' DAL-CIN",
|
||||||
|
"tagline": "Hytale Plugin Developer & Freelance Web Dev. Custom Java plugins, gaming server websites, production-grade Vue/Nuxt apps.",
|
||||||
"navigation": "Quick Links",
|
"navigation": "Quick Links",
|
||||||
"services": "Services",
|
"services": "Services",
|
||||||
"legalNotices": "Legal Notices",
|
"legalNotices": "Legal Notices",
|
||||||
"privacyPolicy": "Privacy Policy",
|
"privacyPolicy": "Privacy Policy",
|
||||||
"servicesList": {
|
"servicesList": {
|
||||||
"webDev": "Web Development",
|
"hytalePlugins": "Hytale Plugins (Java)",
|
||||||
"mobileApps": "Mobile Apps",
|
"webDev": "Web Sites & Apps",
|
||||||
"apiBackend": "API Development",
|
"retainer": "Monthly Retainer",
|
||||||
"consulting": "Tech Consulting"
|
"consulting": "Tech Consulting"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"a11y": {
|
"a11y": {
|
||||||
"logoLabel": "Killian' DAL-CIN — Full Stack Developer — Back to homepage",
|
"logoLabel": "Killian' DAL-CIN — Hytale Plugin Developer — Back to homepage",
|
||||||
"openMenu": "Open navigation menu",
|
"openMenu": "Open navigation menu",
|
||||||
"closeMenu": "Close navigation menu",
|
"closeMenu": "Close navigation menu",
|
||||||
"closeDrawer": "Close menu",
|
"closeDrawer": "Close menu",
|
||||||
@@ -31,31 +31,26 @@
|
|||||||
"themeLight": "Switch to dark mode",
|
"themeLight": "Switch to dark mode",
|
||||||
"gitea": "Killian' DAL-CIN on Gitea (opens in new tab)",
|
"gitea": "Killian' DAL-CIN on Gitea (opens in new tab)",
|
||||||
"linkedin": "Killian' DAL-CIN on LinkedIn (opens in new tab)",
|
"linkedin": "Killian' DAL-CIN on LinkedIn (opens in new tab)",
|
||||||
"fiverr": "Killian' DAL-CIN on Fiverr (opens in new tab)",
|
|
||||||
"blogTocToggle": "Show table of contents",
|
"blogTocToggle": "Show table of contents",
|
||||||
"blogPrev": "Previous article: {title}",
|
"blogPrev": "Previous article: {title}",
|
||||||
"blogNext": "Next article: {title}"
|
"blogNext": "Next article: {title}"
|
||||||
},
|
},
|
||||||
"seo": {
|
"seo": {
|
||||||
"home": {
|
"home": {
|
||||||
"title": "Killian' DAL-CIN — Freelance Full Stack Developer",
|
"title": "Killian' DAL-CIN — Hytale Plugin Developer & Freelance Web Dev",
|
||||||
"description": "Portfolio of Killian' DAL-CIN, freelance full stack developer specializing in Vue.js, React and Node.js. High-performance web applications and custom solutions."
|
"description": "Portfolio of Killian' DAL-CIN, Hytale plugin developer and freelance web developer. Custom Java plugins for Hytale servers, gaming websites, Vue.js/Node.js applications."
|
||||||
},
|
},
|
||||||
"projects": {
|
"projects": {
|
||||||
"title": "Projects — Killian' DAL-CIN",
|
"title": "Projects — Killian' DAL-CIN",
|
||||||
"description": "Discover my web development projects: Vue.js applications, Node.js APIs, Discord bots and enterprise solutions."
|
"description": "Discover my work: custom Hytale plugins, Vue.js applications, Node.js APIs, Discord bots, and gaming server websites."
|
||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"title": "About — Killian' DAL-CIN",
|
"title": "About — Killian' DAL-CIN",
|
||||||
"description": "Biography and skills of Killian' DAL-CIN, freelance full stack developer based in France."
|
"description": "Biography and skills of Killian' DAL-CIN, Hytale plugin developer and freelance web developer based in France."
|
||||||
},
|
},
|
||||||
"contact": {
|
"contact": {
|
||||||
"title": "Contact — Killian' DAL-CIN",
|
"title": "Contact — Killian' DAL-CIN",
|
||||||
"description": "Contact Killian' DAL-CIN to discuss your web development project."
|
"description": "Contact Killian' DAL-CIN to discuss your Hytale plugin or web development project."
|
||||||
},
|
|
||||||
"fiverr": {
|
|
||||||
"title": "Fiverr Services — Killian' DAL-CIN",
|
|
||||||
"description": "Development services available on Fiverr: Discord bots, Minecraft plugins, web applications."
|
|
||||||
},
|
},
|
||||||
"hytale": {
|
"hytale": {
|
||||||
"title": "Custom Hytale Plugins | Killian' DAL-CIN",
|
"title": "Custom Hytale Plugins | Killian' DAL-CIN",
|
||||||
@@ -72,20 +67,20 @@
|
|||||||
"contact": "Contact me"
|
"contact": "Contact me"
|
||||||
},
|
},
|
||||||
"featuredProjects": {
|
"featuredProjects": {
|
||||||
"title": "Web Applications That Deliver Results",
|
"title": "Hytale plugins & web apps running in production",
|
||||||
"subtitle": "Portfolio of real projects that transformed ideas into success. Lightning-fast Vue.js apps, scalable React platforms, robust Node.js APIs.",
|
"subtitle": "Portfolio of real projects, in production, used by real players and clients. Java 25 Hytale plugins, Vue/Nuxt apps, SaaS, Discord bots — not proofs-of-concept, actual shipping.",
|
||||||
"viewAll": "Explore All Projects"
|
"viewAll": "Explore All Projects"
|
||||||
},
|
},
|
||||||
"services": {
|
"services": {
|
||||||
"title": "Premium Web Development Services",
|
"title": "Premium Hytale & Web Services",
|
||||||
"subtitle": "Turnkey solutions that boost your growth. Cutting-edge technologies + proven methodology = guaranteed success for your digital project.",
|
"subtitle": "Custom Hytale plugins, high-performance web apps, gaming SaaS. Stack: Java 25 + Vue/Nuxt + Node.js. Transparent pricing (€149-€790), quote within 24h.",
|
||||||
"webDev": {
|
"hytalePlugins": {
|
||||||
"title": "Custom Vue.js/React Web Applications",
|
"title": "Custom Hytale Plugins (Java)",
|
||||||
"description": "Lightning-fast web apps that convert visitors into customers. Modern SPAs, offline-first PWAs, high-conversion e-commerce. SEO-friendly from day one."
|
"description": "From essential plugin to full MMO system. Wand-based regions, votes & rewards, economy, quests, mini-games. Stack: Java 25 + Hytale Plugin API + Gradle Shadow."
|
||||||
},
|
},
|
||||||
"mobileApps": {
|
"webDev": {
|
||||||
"title": "Cost-Effective Cross-Platform Mobile Apps",
|
"title": "Vue.js / Nuxt / React Web Apps",
|
||||||
"description": "One codebase = iOS + Android + Web. React Native for performant native apps. 60% cost savings vs native development."
|
"description": "Gaming server websites, SaaS platforms, e-commerce. SEO-optimized Nuxt 4 SSR, admin dashboards, Tebex/Discord integrations. Lighthouse 95+, <2s load times."
|
||||||
},
|
},
|
||||||
"optimization": {
|
"optimization": {
|
||||||
"title": "Performance & Technical SEO Optimization",
|
"title": "Performance & Technical SEO Optimization",
|
||||||
@@ -97,8 +92,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cta2": {
|
"cta2": {
|
||||||
"title": "Looking for a Full Stack Developer?",
|
"title": "Need a Hytale Plugin or Web App Built?",
|
||||||
"subtitle": "Let's discuss your project requirements and build something amazing together.",
|
"subtitle": "Let's discuss your project and build something amazing together.",
|
||||||
"startProject": "Start a Conversation",
|
"startProject": "Start a Conversation",
|
||||||
"learnMore": "Explore My Success Stories"
|
"learnMore": "Explore My Success Stories"
|
||||||
},
|
},
|
||||||
@@ -115,9 +110,12 @@
|
|||||||
},
|
},
|
||||||
"projects": {
|
"projects": {
|
||||||
"title": "Web Development Portfolio",
|
"title": "Web Development Portfolio",
|
||||||
"subtitle": "Browse my full stack development projects featuring Vue.js applications, React websites, Node.js APIs, Discord bots, and enterprise software solutions.",
|
"subtitle": "Browse my work: custom Hytale plugins, Vue.js applications, React websites, Node.js APIs, Discord bots, and enterprise software.",
|
||||||
"categories": {
|
"categories": {
|
||||||
"all": "All Projects",
|
"all": "All Projects",
|
||||||
|
"hytaleplugin": "Hytale Plugin",
|
||||||
|
"hytalelibrary": "Hytale Library",
|
||||||
|
"minecraftmod": "Minecraft Mod",
|
||||||
"webdevelopment": "Web Development",
|
"webdevelopment": "Web Development",
|
||||||
"botdevelopment": "Bot Development",
|
"botdevelopment": "Bot Development",
|
||||||
"opensource": "Open Source",
|
"opensource": "Open Source",
|
||||||
@@ -152,11 +150,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"title": "About Killian'- Full Stack Developer",
|
"title": "About Killian' — Hytale Plugin Developer & Web Dev",
|
||||||
"subtitle": "Experienced web developer passionate about Vue.js, React, Node.js, and modern JavaScript technologies.",
|
"subtitle": "Developer specializing in custom Hytale plugins (Java) and modern web applications (Vue.js, React, Node.js).",
|
||||||
"intro": {
|
"intro": {
|
||||||
"title": "Professional Full Stack Developer",
|
"title": "Hytale Plugin Developer & Full Stack Web Developer",
|
||||||
"content": "I'm Killian, an experienced full stack developer specializing in JavaScript technologies. With expertise in Vue.js, React, Node.js, and TypeScript, I create scalable web applications, RESTful APIs, and real-time systems."
|
"content": "I'm Killian, a self-taught developer with 7+ years of experience. I build custom Hytale plugins in Java for server owners who want to stand out, and I craft high-performance web applications in Vue.js, React, and Node.js for gaming projects and professional sites."
|
||||||
},
|
},
|
||||||
"skills": {
|
"skills": {
|
||||||
"title": "Technical Skills & Expertise",
|
"title": "Technical Skills & Expertise",
|
||||||
@@ -172,7 +170,7 @@
|
|||||||
},
|
},
|
||||||
"approach": {
|
"approach": {
|
||||||
"title": "Development Philosophy",
|
"title": "Development Philosophy",
|
||||||
"subtitle": "My approach to full stack development focuses on clean code, scalable architecture, and exceptional user experience.",
|
"subtitle": "Whether building Hytale plugins or web apps, my approach focuses on clean code, scalable architecture, and exceptional user experience.",
|
||||||
"performance": {
|
"performance": {
|
||||||
"title": "Performance-First Development",
|
"title": "Performance-First Development",
|
||||||
"description": "Optimized code, lazy loading, code splitting, and caching strategies. Achieving perfect Lighthouse scores and Core Web Vitals metrics."
|
"description": "Optimized code, lazy loading, code splitting, and caching strategies. Achieving perfect Lighthouse scores and Core Web Vitals metrics."
|
||||||
@@ -191,94 +189,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cta": {
|
"cta": {
|
||||||
"title": "Looking for a Full Stack Developer?",
|
"title": "Need a Hytale Plugin or Web App Built?",
|
||||||
"description": "Let's discuss your project requirements and build something amazing together.",
|
"description": "Let's discuss your project and build something amazing together.",
|
||||||
"button": "Start a Conversation"
|
"button": "Start a Conversation"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fiverr": {
|
|
||||||
"title": "Premium Fiverr Services - Top Rated Developer",
|
|
||||||
"subtitle": "500+ orders delivered. 100% satisfaction rate. <1h response time. 24/7 support. Certified expert in Discord bots, Minecraft plugins & web development.",
|
|
||||||
"profileCta": "Order Now on Fiverr",
|
|
||||||
"stats": {
|
|
||||||
"rating": "Perfect 5/5 Rating"
|
|
||||||
},
|
|
||||||
"pricing": {
|
|
||||||
"startingAt": "From"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Premium Services",
|
|
||||||
"subtitle": "Professional solutions delivered in record time. Every service includes: full source code, detailed documentation, 30-day support, unlimited revisions.",
|
|
||||||
"features": "What's Included",
|
|
||||||
"orderNow": "Order This Service",
|
|
||||||
"learnMore": "View All Details",
|
|
||||||
"moreFeatures": "premium benefits included",
|
|
||||||
"comingSoon": "Available Soon",
|
|
||||||
"available": "Available Now"
|
|
||||||
},
|
|
||||||
"serviceData": {
|
|
||||||
"discord-bot": {
|
|
||||||
"title": "All-In-One Discord Bot | #1 Best-Seller",
|
|
||||||
"description": "The Discord bot of your dreams, coded by an expert. Transform your server into an ultra-active community.",
|
|
||||||
"features": [
|
|
||||||
"Advanced AI moderation system (anti-spam, anti-raid, smart auto-mod)",
|
|
||||||
"Addictive mini-games: casino, RPG, quiz with global leaderboards",
|
|
||||||
"HD music player: Spotify, YouTube, SoundCloud with saved playlists",
|
|
||||||
"Modern web interface for easy configuration (React dashboard included)",
|
|
||||||
"FREE premium VPS hosting for 3 months"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"minecraft-plugin": {
|
|
||||||
"title": "Premium Minecraft Java Plugin | Spigot/Paper Expert",
|
|
||||||
"description": "Custom Minecraft plugins that transform your server into a unique experience. Compatible 1.8 to 1.20+, optimized for large servers (1000+ players).",
|
|
||||||
"features": [
|
|
||||||
"Revolutionary gameplay: procedural dungeons, custom bosses, magic spells",
|
|
||||||
"Advanced economy: GUI shops, auction house, jobs with XP system",
|
|
||||||
"Progression systems: levels, skills, customizable RPG classes",
|
|
||||||
"Optimized MySQL/Redis database for maximum performance",
|
|
||||||
"Multi-server ready: BungeeCord/Velocity with synchronization"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"telegram-bot": {
|
|
||||||
"title": "Pro Business Telegram Bot | Powerful Automation",
|
|
||||||
"description": "Professional Telegram bot that boosts your business. Perfect for e-commerce, customer support, communities.",
|
|
||||||
"features": [
|
|
||||||
"Conversational AI: integrated ChatGPT for natural responses",
|
|
||||||
"Complete e-commerce: product catalog, cart, Stripe/PayPal payments",
|
|
||||||
"Smart broadcasting: user segments, A/B testing, analytics",
|
|
||||||
"Automatic multi-language with DeepL detection and translation",
|
|
||||||
"Maximum security: 2FA, encryption, GDPR compliant"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"website-development": {
|
|
||||||
"title": "Premium Vue.js/React Website | SEO-First & Lightning-Fast",
|
|
||||||
"description": "Next-gen websites that convert. Premium design, maximum performance, SEO optimized.",
|
|
||||||
"features": [
|
|
||||||
"Premium UI/UX design: Figma mockups + modern animations",
|
|
||||||
"Extreme performance: <1.5s load time",
|
|
||||||
"Perfect responsive: tested on 50+ different devices",
|
|
||||||
"Supercharged SEO: schema markup, sitemap, optimized meta",
|
|
||||||
"E-commerce ready: Stripe, PayPal, crypto (if needed)"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"testimonials": {
|
|
||||||
"title": "They Transformed Their Business With My Services",
|
|
||||||
"subtitle": "Join 500+ satisfied entrepreneurs. Average rating 5.0/5.0 across all my services."
|
|
||||||
},
|
|
||||||
"faq": {
|
|
||||||
"title": "Fiverr FAQ",
|
|
||||||
"subtitle": "Everything you need to know before ordering my services on Fiverr."
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Stop Searching, You Found THE Right Developer",
|
|
||||||
"subtitle": "Every day without action = lost opportunities. Launch your project NOW.",
|
|
||||||
"button": "Book My Order Now"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
"contact": {
|
||||||
"title": "Contact Full Stack Developer",
|
"title": "Contact Killian' — Hytale Plugin Developer",
|
||||||
"subtitle": "Get in touch for web development projects, freelance work, or technical consultation. Free project estimation and consultation available.",
|
"subtitle": "Reach out for a custom Hytale plugin, a gaming server website, or any web development project. Free project estimation within 24h.",
|
||||||
"stats": {
|
"stats": {
|
||||||
"responseTime": "Quick Response",
|
"responseTime": "Quick Response",
|
||||||
"satisfaction": "Client Satisfaction",
|
"satisfaction": "Client Satisfaction",
|
||||||
@@ -301,7 +219,7 @@
|
|||||||
},
|
},
|
||||||
"projectTypes": {
|
"projectTypes": {
|
||||||
"title": "What types of projects do you handle?",
|
"title": "What types of projects do you handle?",
|
||||||
"description": "Full stack web applications, REST APIs, Discord bots, e-commerce sites, SaaS platforms, and custom software solutions."
|
"description": "Custom Hytale plugins (Java), gaming server websites, full stack web applications, REST APIs, Discord bots, e-commerce, and SaaS solutions."
|
||||||
},
|
},
|
||||||
"collaboration": {
|
"collaboration": {
|
||||||
"title": "Do you work remotely?",
|
"title": "Do you work remotely?",
|
||||||
@@ -335,6 +253,55 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"projectData": {
|
"projectData": {
|
||||||
|
"votepipe": {
|
||||||
|
"title": "VotePipe — Hytale Vote Rewards SaaS",
|
||||||
|
"description": "Unified SaaS platform that combines Webhook (V1 RSA, V2 HMAC) and Votifier to handle votes from all 7 major Hytale server lists in a single plugin. Visual reward builder, automatic delivery, no port forwarding needed.",
|
||||||
|
"longDescription": "The only Hytale plugin that runs Webhook and Votifier through one unified pipeline. Free / Pro / Network tiers with web dashboard (app.votepipe.com), visual reward builder, streaks, milestones, lucky tiers. Stack: Java 25 plugin + TypeScript backend + SaaS dashboard. Outbound-only secure cloud architecture.",
|
||||||
|
"buttons": {
|
||||||
|
"website": "Official Site",
|
||||||
|
"modtale": "Modtale",
|
||||||
|
"curseforge": "CurseForge",
|
||||||
|
"documentation": "Documentation"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gravity-flip": {
|
||||||
|
"title": "GravityFlip — Hytale Anti-Gravity Regions",
|
||||||
|
"description": "Hytale plugin that creates custom anti-gravity zones with an in-game wand. Walk on ceilings, floating items, drifting mobs — all configurable without touching files.",
|
||||||
|
"longDescription": "Wand-based region builder for Hytale servers. Corners are set with left/right click, JSON persistence is automatic, 10x/sec tick loop, configurable vertical force and grace period. Visual modes: outline / particles / hidden. Built on Hytale Plugin API + Java 25 + Gradle Shadow.",
|
||||||
|
"buttons": {
|
||||||
|
"modtale": "Modtale",
|
||||||
|
"curseforge": "CurseForge"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"async": {
|
||||||
|
"title": "Async — Coroutines for Hytale's per-world ECS",
|
||||||
|
"description": "Kotlin coroutine library that replaces the noisy CompletableFuture + world.execute pattern with one suspending call. Player/world/plugin scopes, three dispatchers, suspending ECS DSL.",
|
||||||
|
"longDescription": "Async solves Hytale's per-world thread model: each world runs on its own thread, touching components from elsewhere throws, and blocking I/O on the world thread freezes players. The library ships dispatchers (World, HytaleIO, Scheduled), scope registries (PlayerScopes, WorldScopes, PluginScopes) with automatic cancellation on disconnect, and a suspending read/modify DSL. Built in Kotlin 2.2, target JVM 24, modular split (core / ecs / binding / dist) so business logic stays testable without a Hytale server.",
|
||||||
|
"buttons": {
|
||||||
|
"modtale": "Modtale",
|
||||||
|
"curseforge": "CurseForge",
|
||||||
|
"github": "GitHub",
|
||||||
|
"gitea": "Gitea"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chain-lightning": {
|
||||||
|
"title": "ChainLightning Sceptre — Hytale Magic Wand",
|
||||||
|
"description": "Hytale plugin that fires chain lightning on right-click — bolt jumps to up to 5 nearby enemies within 8 blocks, with damage falloff per hop and a 4-second cooldown.",
|
||||||
|
"longDescription": "Magical sceptre for Hytale servers. Pure-Java chain resolver decoupled from Hytale via small interfaces (RayCaster, EntitySource, ChainEntity), JUnit 5 tested without a running server. Built on Hytale Plugin API + Java 25 + Gradle Shadow.",
|
||||||
|
"buttons": {
|
||||||
|
"modtale": "Modtale",
|
||||||
|
"curseforge": "CurseForge"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"playhours": {
|
||||||
|
"title": "PlayHours — Forge Server Hours Enforcement",
|
||||||
|
"description": "Forge 1.20.1 mod that enforces per-day open windows, blocks logins outside hours, warns at 15/10/5/1 min, auto-kicks at close, handles holidays, whitelist/blacklist, force modes, LuckPerms integration.",
|
||||||
|
"longDescription": "Minecraft server mod for time-gated access: per-day schedules, midnight-spanning, date exceptions, dynamic MOTD, multi-language (EN/FR), LuckPerms or vanilla ops permissions. Perfect for educational servers, family servers, or maintenance windows.",
|
||||||
|
"buttons": {
|
||||||
|
"curseforge": "CurseForge",
|
||||||
|
"repository": "Repository"
|
||||||
|
}
|
||||||
|
},
|
||||||
"virtual-tour": {
|
"virtual-tour": {
|
||||||
"title": "Virtual Tour - Interactive 360° Experience",
|
"title": "Virtual Tour - Interactive 360° Experience",
|
||||||
"description": "My high school teacher and me had an idea to create a Virtual tour with 360° videos to allow everyone to visit the school from the web.",
|
"description": "My high school teacher and me had an idea to create a Virtual tour with 360° videos to allow everyone to visit the school from the web.",
|
||||||
@@ -420,8 +387,8 @@
|
|||||||
"ctaTitle": "Join My Satisfied Clients",
|
"ctaTitle": "Join My Satisfied Clients",
|
||||||
"ctaSubtitle": "Your project deserves the same level of excellence and professionalism.",
|
"ctaSubtitle": "Your project deserves the same level of excellence and professionalism.",
|
||||||
"ctaText": "Start My Project",
|
"ctaText": "Start My Project",
|
||||||
"reviewsLink": "https://www.fiverr.com/mr_kayjaydee",
|
"reviewsLink": "/contact",
|
||||||
"reviewsText": "View All Reviews",
|
"reviewsText": "Start a Conversation",
|
||||||
"card": {
|
"card": {
|
||||||
"featured": "Featured Testimonial",
|
"featured": "Featured Testimonial",
|
||||||
"results": "Results achieved:"
|
"results": "Results achieved:"
|
||||||
@@ -495,64 +462,92 @@
|
|||||||
},
|
},
|
||||||
"pricing": {
|
"pricing": {
|
||||||
"label": "// pricing",
|
"label": "// pricing",
|
||||||
"title": "Pricing",
|
"title": "Transparent pricing, tiers built for your server",
|
||||||
"subtitle": "Transparent pricing for every project",
|
"subtitle": "From 1-2 day express plugins to complete bespoke MMO systems. No surprises, quote within 24h.",
|
||||||
"cta": "Request a quote",
|
"cta": "Request a quote",
|
||||||
"popular": "Popular",
|
"popular": "Most picked",
|
||||||
"from": "From",
|
"from": "From",
|
||||||
"perMonth": "/month",
|
"perMonth": "/month",
|
||||||
"onQuote": "Custom quote",
|
"onQuote": "Custom quote",
|
||||||
"simple": {
|
"simple": {
|
||||||
"name": "Simple Plugin",
|
"name": "Essential Plugin",
|
||||||
"description": "A basic plugin with simple features",
|
"description": "1 focused feature, up to 8h of dev. Perfect for adding a piece to your server without breaking the bank.",
|
||||||
"features": [
|
"features": [
|
||||||
"Basic features",
|
"1 well-scoped feature",
|
||||||
"Simple configuration",
|
"Delivered in 3-5 days",
|
||||||
"Documentation included",
|
"Clear YAML config",
|
||||||
"30-day support"
|
"30-day support included"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"complex": {
|
"complex": {
|
||||||
"name": "Complex Plugin",
|
"name": "Custom System",
|
||||||
"description": "An advanced plugin with complex systems",
|
"description": "Medium plugin (shop, quest, rank system) with in-game GUI. Up to 20h of dev, delivered in 1-2 weeks.",
|
||||||
"features": [
|
"features": [
|
||||||
"Advanced systems",
|
"Polished in-game GUI",
|
||||||
"API integration",
|
"Persistence + hot-reload",
|
||||||
"Comprehensive testing",
|
"Tests + dev README",
|
||||||
"60-day support"
|
"45-day support included"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
"name": "Custom Development",
|
"name": "Flagship Module",
|
||||||
"description": "A fully customized project",
|
"description": "Custom MMO system for ambitious servers (Runeteria / Hytown tier). 2-4 weeks, quote-based after scoping.",
|
||||||
"features": [
|
"features": [
|
||||||
"Custom architecture",
|
"Co-built detailed spec",
|
||||||
"Unlimited features",
|
"Existing codebase integration",
|
||||||
"Priority support",
|
"Load tests + profiling",
|
||||||
"Maintenance included"
|
"Knowledge transfer session"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"maintenance": {
|
"maintenance": {
|
||||||
"name": "Maintenance & Support",
|
"name": "Monthly Retainer",
|
||||||
"description": "Ongoing support for your plugins",
|
"description": "About 12h per month dedicated to your server: Hytale API patches, fixes, small features. Priority queue.",
|
||||||
"features": [
|
"features": [
|
||||||
"Regular updates",
|
"~12h/month flexible",
|
||||||
"Bug fixes",
|
"Hytale patch tracking included",
|
||||||
"Technical support",
|
"Priority on urgent issues",
|
||||||
"Monitoring"
|
"Dedicated Discord channel"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"web": {
|
"web": {
|
||||||
"name": "Web Development",
|
"name": "Gaming / Server Website",
|
||||||
"description": "Websites and apps for your community",
|
"description": "Landing or full website for your server: vote-rewards, admin dashboard, SEO-optimized Nuxt/Vue.",
|
||||||
"features": [
|
"features": [
|
||||||
"Responsive website",
|
"Nuxt/Vue SSR — SEO-optimized",
|
||||||
"SEO optimized",
|
"Multi-list vote-rewards",
|
||||||
"Admin dashboard",
|
"Admin dashboard for server owner",
|
||||||
"Discord integration"
|
"Discord webhook integration"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pricingNote": {
|
||||||
|
"hourly": "Outside packages: €45/h excl. VAT, 1h minimum (spot fixes, audits).",
|
||||||
|
"flagshipCta": "Flagship: custom quote after a 30-minute scoping call."
|
||||||
|
},
|
||||||
|
"demos": {
|
||||||
|
"label": "// live-demos",
|
||||||
|
"title": "Live plugins, production-grade code",
|
||||||
|
"subtitle": "No marketing promises. These are the Hytale plugins I publicly maintain — usable today on any Hytale server.",
|
||||||
|
"featured": "Featured",
|
||||||
|
"viewSite": "View site",
|
||||||
|
"footnote": "Every plugin is built in-house, production-tested, and ships with full documentation.",
|
||||||
|
"votepipe": {
|
||||||
|
"title": "VotePipe — Vote Rewards SaaS",
|
||||||
|
"tagline": "Hytale plugin + SaaS dashboard that unifies Webhook and Votifier across the 7 major vote lists. No port forwarding, automatic delivery, visual reward builder."
|
||||||
|
},
|
||||||
|
"gravity-flip": {
|
||||||
|
"title": "GravityFlip Region",
|
||||||
|
"tagline": "Drop a wand, set 2 corners, gravity flips inside the zone. Ceiling-walking and floating items live in 5 minutes of setup."
|
||||||
|
},
|
||||||
|
"chain-lightning": {
|
||||||
|
"title": "ChainLightning Sceptre",
|
||||||
|
"tagline": "Right-click a mob and the bolt jumps to up to 5 nearby enemies within 8 blocks. Damage falls off per hop, JUnit-tested chain resolver."
|
||||||
|
},
|
||||||
|
"async": {
|
||||||
|
"title": "Async — Kotlin coroutines for Hytale ECS",
|
||||||
|
"tagline": "One suspending call replaces CompletableFuture + world.execute boilerplate. Player/world/plugin scopes, three dispatchers, automatic cancellation on disconnect."
|
||||||
|
}
|
||||||
|
},
|
||||||
"recentArticles": {
|
"recentArticles": {
|
||||||
"title": "Recent articles",
|
"title": "Recent articles",
|
||||||
"subtitle": "Latest writing on Hytale plugin development",
|
"subtitle": "Latest writing on Hytale plugin development",
|
||||||
|
|||||||
+150
-155
@@ -4,25 +4,25 @@
|
|||||||
"projects": "Projets",
|
"projects": "Projets",
|
||||||
"about": "A propos",
|
"about": "A propos",
|
||||||
"contact": "Contact",
|
"contact": "Contact",
|
||||||
"fiverr": "Fiverr",
|
|
||||||
"hytale": "Hytale",
|
"hytale": "Hytale",
|
||||||
"blog": "Blog"
|
"blog": "Blog"
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"copyright": "© 2026 Killian' DAL-CIN",
|
"copyright": "© 2026 Killian' DAL-CIN",
|
||||||
|
"tagline": "Hytale Plugin Developer & Dev Web Freelance. Plugins Java sur-mesure, sites pour serveurs gaming, applications Vue/Nuxt en production.",
|
||||||
"navigation": "Liens Rapides",
|
"navigation": "Liens Rapides",
|
||||||
"services": "Services",
|
"services": "Services",
|
||||||
"legalNotices": "Mentions Légales",
|
"legalNotices": "Mentions Légales",
|
||||||
"privacyPolicy": "Politique de Confidentialité",
|
"privacyPolicy": "Politique de Confidentialité",
|
||||||
"servicesList": {
|
"servicesList": {
|
||||||
"webDev": "Développement Web",
|
"hytalePlugins": "Plugins Hytale (Java)",
|
||||||
"mobileApps": "Applications Mobiles",
|
"webDev": "Sites & Apps Web",
|
||||||
"apiBackend": "Développement API",
|
"retainer": "Retainer Mensuel",
|
||||||
"consulting": "Consulting Tech"
|
"consulting": "Conseil Tech"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"a11y": {
|
"a11y": {
|
||||||
"logoLabel": "Killian' DAL-CIN — Developpeur Full Stack — Retour a l'accueil",
|
"logoLabel": "Killian' DAL-CIN — Hytale Plugin Developer — Retour a l'accueil",
|
||||||
"openMenu": "Ouvrir le menu de navigation",
|
"openMenu": "Ouvrir le menu de navigation",
|
||||||
"closeMenu": "Fermer le menu de navigation",
|
"closeMenu": "Fermer le menu de navigation",
|
||||||
"closeDrawer": "Fermer le menu",
|
"closeDrawer": "Fermer le menu",
|
||||||
@@ -31,31 +31,26 @@
|
|||||||
"themeLight": "Activer le mode sombre",
|
"themeLight": "Activer le mode sombre",
|
||||||
"gitea": "Gitea de Killian' DAL-CIN (nouvelle fenetre)",
|
"gitea": "Gitea de Killian' DAL-CIN (nouvelle fenetre)",
|
||||||
"linkedin": "LinkedIn de Killian' DAL-CIN (nouvelle fenetre)",
|
"linkedin": "LinkedIn de Killian' DAL-CIN (nouvelle fenetre)",
|
||||||
"fiverr": "Fiverr de Killian' DAL-CIN (nouvelle fenetre)",
|
|
||||||
"blogTocToggle": "Afficher le sommaire",
|
"blogTocToggle": "Afficher le sommaire",
|
||||||
"blogPrev": "Article précédent : {title}",
|
"blogPrev": "Article précédent : {title}",
|
||||||
"blogNext": "Article suivant : {title}"
|
"blogNext": "Article suivant : {title}"
|
||||||
},
|
},
|
||||||
"seo": {
|
"seo": {
|
||||||
"home": {
|
"home": {
|
||||||
"title": "Killian' DAL-CIN — Developpeur Full Stack Freelance",
|
"title": "Killian' DAL-CIN — Hytale Plugin Developer & Dev Web Freelance",
|
||||||
"description": "Portfolio de Killian' DAL-CIN, developpeur full stack freelance specialise en Vue.js, React et Node.js. Applications web performantes et solutions sur-mesure."
|
"description": "Portfolio de Killian' DAL-CIN, developpeur de plugins Hytale et developpeur web freelance. Plugins Java sur-mesure, sites pour serveurs gaming, applications Vue.js et Node.js."
|
||||||
},
|
},
|
||||||
"projects": {
|
"projects": {
|
||||||
"title": "Projets — Killian' DAL-CIN",
|
"title": "Projets — Killian' DAL-CIN",
|
||||||
"description": "Decouvrez mes realisations en developpement web : applications Vue.js, API Node.js, bots Discord et solutions d'entreprise."
|
"description": "Decouvrez mes realisations : plugins Hytale sur-mesure, applications Vue.js, API Node.js, bots Discord et sites pour serveurs gaming."
|
||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"title": "A propos — Killian' DAL-CIN",
|
"title": "A propos — Killian' DAL-CIN",
|
||||||
"description": "Biographie et competences de Killian' DAL-CIN, developpeur full stack freelance base en France."
|
"description": "Biographie et competences de Killian' DAL-CIN, developpeur de plugins Hytale et dev web freelance base en France."
|
||||||
},
|
},
|
||||||
"contact": {
|
"contact": {
|
||||||
"title": "Contact — Killian' DAL-CIN",
|
"title": "Contact — Killian' DAL-CIN",
|
||||||
"description": "Contactez Killian' DAL-CIN pour discuter de votre projet de developpement web."
|
"description": "Contactez Killian' DAL-CIN pour discuter de votre plugin Hytale ou de votre projet de developpement web."
|
||||||
},
|
|
||||||
"fiverr": {
|
|
||||||
"title": "Services Fiverr — Killian' DAL-CIN",
|
|
||||||
"description": "Services de developpement disponibles sur Fiverr : bots Discord, plugins Minecraft, applications web."
|
|
||||||
},
|
},
|
||||||
"hytale": {
|
"hytale": {
|
||||||
"title": "Plugins Hytale sur-mesure | Killian' DAL-CIN",
|
"title": "Plugins Hytale sur-mesure | Killian' DAL-CIN",
|
||||||
@@ -72,20 +67,20 @@
|
|||||||
"contact": "Me contacter"
|
"contact": "Me contacter"
|
||||||
},
|
},
|
||||||
"featuredProjects": {
|
"featuredProjects": {
|
||||||
"title": "Applications Web Qui Cartonnent",
|
"title": "Plugins Hytale & Apps Web qui tournent en prod",
|
||||||
"subtitle": "Portfolio de projets réels qui ont transformé des idées en succès. Applications Vue.js ultra-rapides, plateformes React scalables, API Node.js robustes.",
|
"subtitle": "Portfolio de projets réels, en production, utilisés par de vrais joueurs et clients. Plugins Hytale Java 25, applications Vue.js/Nuxt, SaaS, bots Discord — pas du proof-of-concept, du shipping.",
|
||||||
"viewAll": "Explorer Tous les Projets"
|
"viewAll": "Explorer Tous les Projets"
|
||||||
},
|
},
|
||||||
"services": {
|
"services": {
|
||||||
"title": "Services Premium de Développement Web",
|
"title": "Services Premium Hytale & Web",
|
||||||
"subtitle": "Solutions clés en main qui boostent votre croissance. Technologies de pointe + méthodologie éprouvée = succès garanti pour votre projet digital.",
|
"subtitle": "Plugins Hytale custom, applications web haute performance, SaaS gaming. Stack Java 25 + Vue/Nuxt + Node.js. Tarifs transparents (149€-790€), devis sous 24h.",
|
||||||
"webDev": {
|
"hytalePlugins": {
|
||||||
"title": "Applications Web Vue.js/React Sur-Mesure",
|
"title": "Plugins Hytale Custom (Java)",
|
||||||
"description": "Création d'applications web lightning-fast qui convertissent. SPA modernes, PWA offline-first, e-commerce haute conversion. SEO-friendly dès la conception."
|
"description": "Du plugin essentiel au système MMO complet. Wand-based regions, votes & rewards, économie, quêtes, mini-jeux. Stack Java 25 + Hytale Plugin API + Gradle Shadow."
|
||||||
},
|
},
|
||||||
"mobileApps": {
|
"webDev": {
|
||||||
"title": "Apps Mobiles Cross-Platform Rentables",
|
"title": "Applications Web Vue.js / Nuxt / React",
|
||||||
"description": "Une seule codebase = iOS + Android + Web. React Native pour des apps natives performantes. 60% d'économie vs développement natif."
|
"description": "Sites pour serveurs gaming, SaaS, e-commerce. SSR Nuxt 4 SEO-optimisé, dashboards admin, intégrations Tebex/Discord. Lighthouse 95+, chargement <2s."
|
||||||
},
|
},
|
||||||
"optimization": {
|
"optimization": {
|
||||||
"title": "Optimisation Performance & SEO Technique",
|
"title": "Optimisation Performance & SEO Technique",
|
||||||
@@ -97,8 +92,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cta2": {
|
"cta2": {
|
||||||
"title": "Vous Cherchez un Développeur Full Stack ?",
|
"title": "Un Plugin Hytale ou une App Web à Développer ?",
|
||||||
"subtitle": "Discutons de vos besoins de projet et construisons quelque chose d'incroyable ensemble.",
|
"subtitle": "Discutons de vos besoins et construisons quelque chose d'incroyable ensemble.",
|
||||||
"startProject": "Démarrer une Conversation",
|
"startProject": "Démarrer une Conversation",
|
||||||
"learnMore": "Découvrir Mes Succès"
|
"learnMore": "Découvrir Mes Succès"
|
||||||
},
|
},
|
||||||
@@ -115,9 +110,12 @@
|
|||||||
},
|
},
|
||||||
"projects": {
|
"projects": {
|
||||||
"title": "Portfolio de Développement Web",
|
"title": "Portfolio de Développement Web",
|
||||||
"subtitle": "Parcourez mes projets de développement full stack incluant des applications Vue.js, sites React, API Node.js, bots Discord et solutions d'entreprise.",
|
"subtitle": "Parcourez mes projets : plugins Hytale, applications Vue.js, sites React, API Node.js, bots Discord et solutions d'entreprise.",
|
||||||
"categories": {
|
"categories": {
|
||||||
"all": "Tous les Projets",
|
"all": "Tous les Projets",
|
||||||
|
"hytaleplugin": "Plugin Hytale",
|
||||||
|
"hytalelibrary": "Librairie Hytale",
|
||||||
|
"minecraftmod": "Mod Minecraft",
|
||||||
"webdevelopment": "Développement Web",
|
"webdevelopment": "Développement Web",
|
||||||
"botdevelopment": "Développement de Bot",
|
"botdevelopment": "Développement de Bot",
|
||||||
"opensource": "Open Source",
|
"opensource": "Open Source",
|
||||||
@@ -152,11 +150,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"title": "À propos de Killian'- Développeur Full Stack",
|
"title": "À propos de Killian' — Hytale Plugin Developer & Dev Web",
|
||||||
"subtitle": "Développeur web expérimenté passionné par Vue.js, React, Node.js et les technologies JavaScript modernes.",
|
"subtitle": "Développeur spécialisé en plugins Hytale (Java) et applications web modernes (Vue.js, React, Node.js).",
|
||||||
"intro": {
|
"intro": {
|
||||||
"title": "Développeur Full Stack Professionnel",
|
"title": "Hytale Plugin Developer & Développeur Web Full Stack",
|
||||||
"content": "Je suis Killian, un développeur full stack expérimenté spécialisé dans les technologies JavaScript. Avec une expertise en Vue.js, React, Node.js et TypeScript, je crée des applications web évolutives, des API RESTful et des systèmes temps réel."
|
"content": "Je suis Killian, développeur autodidacte avec 7+ ans d'expérience. Je développe des plugins Hytale sur-mesure en Java pour les server owners qui veulent se démarquer, et je crée des applications web performantes en Vue.js, React et Node.js pour les projets gaming et sites pros."
|
||||||
},
|
},
|
||||||
"skills": {
|
"skills": {
|
||||||
"title": "Compétences Techniques & Expertise",
|
"title": "Compétences Techniques & Expertise",
|
||||||
@@ -172,7 +170,7 @@
|
|||||||
},
|
},
|
||||||
"approach": {
|
"approach": {
|
||||||
"title": "Philosophie de Développement",
|
"title": "Philosophie de Développement",
|
||||||
"subtitle": "Mon approche du développement full stack se concentre sur le code propre, l'architecture évolutive et l'expérience utilisateur exceptionnelle.",
|
"subtitle": "Mon approche, que ce soit sur les plugins Hytale ou les apps web, se concentre sur le code propre, l'architecture évolutive et l'expérience utilisateur exceptionnelle.",
|
||||||
"performance": {
|
"performance": {
|
||||||
"title": "Développement Axé Performance",
|
"title": "Développement Axé Performance",
|
||||||
"description": "Code optimisé, lazy loading, code splitting et stratégies de cache. Scores Lighthouse parfaits et métriques Core Web Vitals."
|
"description": "Code optimisé, lazy loading, code splitting et stratégies de cache. Scores Lighthouse parfaits et métriques Core Web Vitals."
|
||||||
@@ -191,94 +189,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cta": {
|
"cta": {
|
||||||
"title": "Vous Cherchez un Développeur Full Stack ?",
|
"title": "Un Plugin Hytale ou une App Web à Développer ?",
|
||||||
"description": "Discutons de vos besoins de projet et construisons quelque chose d'incroyable ensemble.",
|
"description": "Discutons de vos besoins et construisons quelque chose d'incroyable ensemble.",
|
||||||
"button": "Démarrer une Conversation"
|
"button": "Démarrer une Conversation"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fiverr": {
|
|
||||||
"title": "Services Fiverr Premium - Développeur Top Rated Seller",
|
|
||||||
"subtitle": "500+ commandes livrées. 100% satisfaction client. Réponse <1h. Support FR/EN 24/7. Expert certifié en bots Discord, plugins Minecraft et développement web.",
|
|
||||||
"profileCta": "Commander Maintenant sur Fiverr",
|
|
||||||
"stats": {
|
|
||||||
"rating": "Note Parfaite 5/5"
|
|
||||||
},
|
|
||||||
"pricing": {
|
|
||||||
"startingAt": "Dès"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Services Premium",
|
|
||||||
"subtitle": "Solutions professionnelles livrées en temps record. Chaque service inclut : code source complet, documentation détaillée, support 30 jours, révisions illimitées.",
|
|
||||||
"features": "Ce Qui Est Inclus",
|
|
||||||
"orderNow": "Commander Ce Service",
|
|
||||||
"learnMore": "Voir Tous les Détails",
|
|
||||||
"moreFeatures": "avantages premium inclus",
|
|
||||||
"comingSoon": "Disponible Bientôt",
|
|
||||||
"available": "Disponible Immédiatement"
|
|
||||||
},
|
|
||||||
"serviceData": {
|
|
||||||
"discord-bot": {
|
|
||||||
"title": "Bot Discord Ultra-Complet | #1 Best-Seller",
|
|
||||||
"description": "Le bot Discord de vos rêves, codé par un expert. Transformez votre serveur en communauté ultra-active.",
|
|
||||||
"features": [
|
|
||||||
"Système de modération IA avancé (anti-spam, anti-raid, auto-mod intelligent)",
|
|
||||||
"Mini-jeux addictifs : casino, RPG, quiz avec leaderboards globaux",
|
|
||||||
"Lecteur musique HD : Spotify, YouTube, SoundCloud, avec playlist sauvegardées",
|
|
||||||
"Interface web moderne pour configuration facile (dashboard React inclus)",
|
|
||||||
"Hébergement VPS premium OFFERT pendant 3 mois"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"minecraft-plugin": {
|
|
||||||
"title": "Plugin Minecraft Java Premium | Spigot/Paper Expert",
|
|
||||||
"description": "Plugins Minecraft sur-mesure qui transforment votre serveur en expérience unique. Compatible 1.8 → 1.20+, optimisé pour gros serveurs (1000+ joueurs).",
|
|
||||||
"features": [
|
|
||||||
"Gameplay révolutionnaire : donjons procéduraux, boss custom, sorts magiques",
|
|
||||||
"Économie avancée : boutiques GUI, auction house, métiers avec XP",
|
|
||||||
"Systèmes de progression : levels, skills, classes RPG personnalisables",
|
|
||||||
"Base de données optimisée MySQL/Redis pour performances maximales",
|
|
||||||
"Multi-serveurs : BungeeCord/Velocity ready avec synchronisation"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"telegram-bot": {
|
|
||||||
"title": "Bot Telegram Pro Business | Automatisation Puissante",
|
|
||||||
"description": "Bot Telegram professionnel qui booste votre business. Parfait pour e-commerce, support client, communautés.",
|
|
||||||
"features": [
|
|
||||||
"IA conversationnelle : ChatGPT intégré pour réponses naturelles",
|
|
||||||
"E-commerce complet : catalogue produits, panier, paiements Stripe/PayPal",
|
|
||||||
"Broadcasting intelligent : segments utilisateurs, A/B testing, analytics",
|
|
||||||
"Multi-langues automatique avec détection et traduction DeepL",
|
|
||||||
"Sécurité maximale : 2FA, encryption, RGPD compliant"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"website-development": {
|
|
||||||
"title": "Site Web Premium Vue.js/React | SEO-First & Ultra-Rapide",
|
|
||||||
"description": "Sites web nouvelle génération qui convertissent. Design premium, performance maximale, SEO optimisé.",
|
|
||||||
"features": [
|
|
||||||
"Design UI/UX premium : mockups Figma + animations modernes",
|
|
||||||
"Performance extrême : chargement <1.5s",
|
|
||||||
"Responsive parfait : testé sur 50+ appareils différents",
|
|
||||||
"SEO surpuissant : schema markup, sitemap, meta optimisées",
|
|
||||||
"E-commerce ready : Stripe, PayPal, cryptos (si besoin)"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"testimonials": {
|
|
||||||
"title": "Ils Ont Transformé Leur Business Avec Mes Services",
|
|
||||||
"subtitle": "Rejoignez 500+ entrepreneurs satisfaits. Note moyenne 5.0/5.0 sur l'ensemble de mes services."
|
|
||||||
},
|
|
||||||
"faq": {
|
|
||||||
"title": "Questions Frequentes Fiverr",
|
|
||||||
"subtitle": "Tout ce que vous devez savoir avant de commander mes services sur Fiverr."
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Arrêtez de Chercher, Vous Avez Trouvé LE Bon Développeur",
|
|
||||||
"subtitle": "Chaque jour sans agir = opportunités perdues. Lancez votre projet MAINTENANT.",
|
|
||||||
"button": "Réserver Ma Commande Maintenant"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
"contact": {
|
||||||
"title": "Contacter Développeur Full Stack",
|
"title": "Contacter Killian' — Hytale Plugin Developer",
|
||||||
"subtitle": "Contactez-moi pour des projets de développement web, du travail freelance ou une consultation technique. Estimation de projet et consultation gratuites disponibles.",
|
"subtitle": "Contactez-moi pour un plugin Hytale sur-mesure, un site pour serveur gaming, ou tout projet de développement web. Devis gratuit sous 24h.",
|
||||||
"stats": {
|
"stats": {
|
||||||
"responseTime": "Réponse Rapide",
|
"responseTime": "Réponse Rapide",
|
||||||
"satisfaction": "Satisfaction Client",
|
"satisfaction": "Satisfaction Client",
|
||||||
@@ -301,7 +219,7 @@
|
|||||||
},
|
},
|
||||||
"projectTypes": {
|
"projectTypes": {
|
||||||
"title": "Quels types de projets gérez-vous ?",
|
"title": "Quels types de projets gérez-vous ?",
|
||||||
"description": "Applications web full stack, API REST, bots Discord, sites e-commerce, plateformes SaaS et solutions logicielles personnalisées."
|
"description": "Plugins Hytale (Java), sites pour serveurs gaming, applications web full stack, API REST, bots Discord, e-commerce et SaaS sur-mesure."
|
||||||
},
|
},
|
||||||
"collaboration": {
|
"collaboration": {
|
||||||
"title": "Travaillez-vous à distance ?",
|
"title": "Travaillez-vous à distance ?",
|
||||||
@@ -335,6 +253,55 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"projectData": {
|
"projectData": {
|
||||||
|
"votepipe": {
|
||||||
|
"title": "VotePipe — SaaS Vote Rewards Hytale",
|
||||||
|
"description": "Plateforme SaaS unifiée qui combine Webhook (V1 RSA, V2 HMAC) et Votifier pour récupérer les votes des 7 grandes listes Hytale en un seul plugin. Visual reward builder, livraison automatique, aucun port à ouvrir.",
|
||||||
|
"longDescription": "Le seul plugin Hytale qui fait passer Webhook et Votifier dans un pipeline unifié. Tarifs Free / Pro / Network avec dashboard web (app.votepipe.com), reward builder visuel, streaks, milestones, lucky tiers. Stack : Java 25 plugin + backend TypeScript + dashboard SaaS. Architecture cloud sécurisée — outbound-only.",
|
||||||
|
"buttons": {
|
||||||
|
"website": "Site Officiel",
|
||||||
|
"modtale": "Modtale",
|
||||||
|
"curseforge": "CurseForge",
|
||||||
|
"documentation": "Documentation"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gravity-flip": {
|
||||||
|
"title": "GravityFlip — Régions Anti-Gravité Hytale",
|
||||||
|
"description": "Plugin Hytale qui crée des zones d'anti-gravité custom avec un wand in-game. Marche sur le plafond, items qui flottent, mobs flottants — tout configurable sans toucher aux fichiers.",
|
||||||
|
"longDescription": "Wand-based region builder pour serveurs Hytale. Les corners se définissent en clic gauche/droit, persistance JSON automatique, tick loop 10x/sec, force verticale et grace period configurables. Mode visuel outline / particles / hidden. Construit sur Hytale Plugin API + Java 25 + Gradle Shadow.",
|
||||||
|
"buttons": {
|
||||||
|
"modtale": "Modtale",
|
||||||
|
"curseforge": "CurseForge"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"async": {
|
||||||
|
"title": "Async — Coroutines pour l'ECS per-world de Hytale",
|
||||||
|
"description": "Bibliothèque Kotlin qui remplace le pattern CompletableFuture + world.execute par un seul appel suspending. Scopes player/world/plugin, trois dispatchers, DSL ECS suspending.",
|
||||||
|
"longDescription": "Async résout le modèle thread per-world de Hytale : chaque monde tourne sur son thread, toucher un composant ailleurs throw, et un I/O bloquant sur le thread world freeze tous les joueurs. La lib expose des dispatchers (World, HytaleIO, Scheduled), des registres de scopes (PlayerScopes, WorldScopes, PluginScopes) avec annulation automatique au disconnect, et un DSL read/modify suspending. Construit en Kotlin 2.2, cible JVM 24, split modulaire (core / ecs / binding / dist) pour garder la logique testable sans serveur Hytale.",
|
||||||
|
"buttons": {
|
||||||
|
"modtale": "Modtale",
|
||||||
|
"curseforge": "CurseForge",
|
||||||
|
"github": "GitHub",
|
||||||
|
"gitea": "Gitea"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chain-lightning": {
|
||||||
|
"title": "ChainLightning Sceptre — Wand Magique Hytale",
|
||||||
|
"description": "Plugin Hytale qui lance un éclair en chaîne au clic droit — le bolt rebondit sur jusqu'à 5 ennemis proches dans un rayon de 8 blocs, avec damage falloff par hop et un cooldown de 4 secondes.",
|
||||||
|
"longDescription": "Sceptre magique pour serveurs Hytale. Chain resolver pur Java découplé de Hytale via petites interfaces (RayCaster, EntitySource, ChainEntity), testé en JUnit 5 sans serveur. Construit sur Hytale Plugin API + Java 25 + Gradle Shadow.",
|
||||||
|
"buttons": {
|
||||||
|
"modtale": "Modtale",
|
||||||
|
"curseforge": "CurseForge"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"playhours": {
|
||||||
|
"title": "PlayHours — Forge Server Hours Enforcement",
|
||||||
|
"description": "Mod Forge 1.20.1 qui force des horaires d'ouverture par jour, blocage de connexion hors heures, warns 15/10/5/1 min, auto-kick à la fermeture, gestion des jours fériés, whitelist/blacklist, force modes, intégration LuckPerms.",
|
||||||
|
"longDescription": "Mod serveur Minecraft pour gérer l'accès aux horaires : schedules per-day, midnight-spanning, exceptions de dates, MOTD dynamique, multi-langues (EN/FR), permissions LuckPerms ou ops vanilla. Parfait pour serveurs scolaires, familiaux, ou avec maintenance windows.",
|
||||||
|
"buttons": {
|
||||||
|
"curseforge": "CurseForge",
|
||||||
|
"repository": "Dépôt"
|
||||||
|
}
|
||||||
|
},
|
||||||
"virtual-tour": {
|
"virtual-tour": {
|
||||||
"title": "Visite Virtuelle - Expérience 360° Interactive",
|
"title": "Visite Virtuelle - Expérience 360° Interactive",
|
||||||
"description": "Mon professeur de lycée et moi avons eu l'idée de créer une visite virtuelle avec des vidéos 360° pour permettre à tous de visiter l'école depuis le web.",
|
"description": "Mon professeur de lycée et moi avons eu l'idée de créer une visite virtuelle avec des vidéos 360° pour permettre à tous de visiter l'école depuis le web.",
|
||||||
@@ -420,8 +387,8 @@
|
|||||||
"ctaTitle": "Rejoignez Mes Clients Satisfaits",
|
"ctaTitle": "Rejoignez Mes Clients Satisfaits",
|
||||||
"ctaSubtitle": "Votre projet mérite le même niveau d'excellence et de professionnalisme.",
|
"ctaSubtitle": "Votre projet mérite le même niveau d'excellence et de professionnalisme.",
|
||||||
"ctaText": "Démarrer Mon Projet",
|
"ctaText": "Démarrer Mon Projet",
|
||||||
"reviewsLink": "https://www.fiverr.com/mr_kayjaydee",
|
"reviewsLink": "/contact",
|
||||||
"reviewsText": "Voir Tous les Avis",
|
"reviewsText": "Démarrer Une Conversation",
|
||||||
"card": {
|
"card": {
|
||||||
"featured": "Témoignage Vedette",
|
"featured": "Témoignage Vedette",
|
||||||
"results": "Résultats obtenus :"
|
"results": "Résultats obtenus :"
|
||||||
@@ -495,64 +462,92 @@
|
|||||||
},
|
},
|
||||||
"pricing": {
|
"pricing": {
|
||||||
"label": "// tarifs",
|
"label": "// tarifs",
|
||||||
"title": "Tarifs",
|
"title": "Tarifs transparents, tiers adaptés à votre serveur",
|
||||||
"subtitle": "Des offres transparentes pour chaque projet",
|
"subtitle": "De l'express 1-2 jours au système MMO complet sur mesure. Sans surprise, devis sous 24h.",
|
||||||
"cta": "Demander un devis",
|
"cta": "Demander un devis",
|
||||||
"popular": "Populaire",
|
"popular": "Le plus choisi",
|
||||||
"from": "A partir de",
|
"from": "À partir de",
|
||||||
"perMonth": "/mois",
|
"perMonth": "/mois",
|
||||||
"onQuote": "Sur devis",
|
"onQuote": "Sur devis",
|
||||||
"simple": {
|
"simple": {
|
||||||
"name": "Plugin Simple",
|
"name": "Plugin Essentiel",
|
||||||
"description": "Un plugin basique avec des fonctionnalites simples",
|
"description": "1 fonctionnalité ciblée, jusqu'à 8h de dev. Parfait pour ajouter une brique à votre serveur sans casser la tirelire.",
|
||||||
"features": [
|
"features": [
|
||||||
"Fonctionnalites de base",
|
"1 feature bien scopée",
|
||||||
"Configuration simple",
|
"Livraison sous 3-5 jours",
|
||||||
"Documentation incluse",
|
"Config YAML claire",
|
||||||
"Support 30 jours"
|
"Support inclus 30 jours"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"complex": {
|
"complex": {
|
||||||
"name": "Plugin Complexe",
|
"name": "Système Sur-Mesure",
|
||||||
"description": "Un plugin avance avec des systemes complexes",
|
"description": "Plugin moyen (shop, quête, système de rangs) avec GUI in-game. Jusqu'à 20h de dev, livré en 1-2 semaines.",
|
||||||
"features": [
|
"features": [
|
||||||
"Systemes avances",
|
"GUI in-game soignée",
|
||||||
"Integration API",
|
"Persistence + reload à chaud",
|
||||||
"Tests complets",
|
"Tests + README dev",
|
||||||
"Support 60 jours"
|
"Support inclus 45 jours"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
"name": "Developpement Sur-Mesure",
|
"name": "Module Flagship",
|
||||||
"description": "Un projet entierement personnalise",
|
"description": "Système MMO custom pour serveur ambitieux (Runeteria / Hytown tier). 2-4 semaines, sur devis après cadrage.",
|
||||||
"features": [
|
"features": [
|
||||||
"Architecture sur-mesure",
|
"Spec détaillée co-construite",
|
||||||
"Fonctionnalites illimitees",
|
"Intégration codebase existante",
|
||||||
"Support prioritaire",
|
"Tests charge + profilage",
|
||||||
"Maintenance incluse"
|
"Transfert de connaissances"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"maintenance": {
|
"maintenance": {
|
||||||
"name": "Maintenance & Support",
|
"name": "Retainer Mensuel",
|
||||||
"description": "Support continu pour vos plugins",
|
"description": "Environ 12h par mois dédiées à votre serveur : patches API Hytale, fixes, petites features. File prioritaire.",
|
||||||
"features": [
|
"features": [
|
||||||
"Mises a jour regulieres",
|
"~12h/mois flexibles",
|
||||||
"Corrections de bugs",
|
"Suivi patches Hytale inclus",
|
||||||
"Support technique",
|
"Priorité sur les urgences",
|
||||||
"Monitoring"
|
"Canal Discord dédié"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"web": {
|
"web": {
|
||||||
"name": "Developpement Web",
|
"name": "Site Gaming / Serveur",
|
||||||
"description": "Sites web et applications pour votre communaute",
|
"description": "Landing ou site complet pour votre serveur : vote-rewards, dashboard admin, SEO optimisé Nuxt/Vue.",
|
||||||
"features": [
|
"features": [
|
||||||
"Site responsive",
|
"Nuxt/Vue SSR — SEO optimisé",
|
||||||
"SEO optimise",
|
"Vote-reward multi-listes",
|
||||||
"Dashboard admin",
|
"Dashboard admin server-owner",
|
||||||
"Integration Discord"
|
"Intégration Discord webhook"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pricingNote": {
|
||||||
|
"hourly": "Hors packages : 45€/h HT, minimum 1h (spot fixes, audits).",
|
||||||
|
"flagshipCta": "Flagship : sur devis après cadrage de 30 minutes."
|
||||||
|
},
|
||||||
|
"demos": {
|
||||||
|
"label": "// live-demos",
|
||||||
|
"title": "Plugins live, code en production",
|
||||||
|
"subtitle": "Pas de promesses marketing. Voici les plugins Hytale que je maintiens publiquement, utilisables aujourd'hui sur n'importe quel serveur Hytale.",
|
||||||
|
"featured": "À la une",
|
||||||
|
"viewSite": "Voir le site",
|
||||||
|
"footnote": "Chaque plugin est build maison, testé en production, et livré avec sa documentation.",
|
||||||
|
"votepipe": {
|
||||||
|
"title": "VotePipe — SaaS Vote Rewards",
|
||||||
|
"tagline": "Plugin Hytale + dashboard SaaS qui unifie Webhook et Votifier sur les 7 grandes listes de votes. Sans port à ouvrir, livraison automatique, reward builder visuel."
|
||||||
|
},
|
||||||
|
"gravity-flip": {
|
||||||
|
"title": "GravityFlip Region",
|
||||||
|
"tagline": "Pose un wand, définis 2 corners, gravité inversée dans la zone. Marche-au-plafond et items qui flottent en 5 minutes de setup."
|
||||||
|
},
|
||||||
|
"chain-lightning": {
|
||||||
|
"title": "ChainLightning Sceptre",
|
||||||
|
"tagline": "Clic droit sur un mob et l'éclair rebondit sur jusqu'à 5 ennemis dans un rayon de 8 blocs. Damage falloff par hop, chain resolver JUnit-testé."
|
||||||
|
},
|
||||||
|
"async": {
|
||||||
|
"title": "Async — Coroutines Kotlin pour l'ECS Hytale",
|
||||||
|
"tagline": "Un seul appel suspending remplace le boilerplate CompletableFuture + world.execute. Scopes player/world/plugin, trois dispatchers, annulation auto au disconnect."
|
||||||
|
}
|
||||||
|
},
|
||||||
"recentArticles": {
|
"recentArticles": {
|
||||||
"title": "Articles récents",
|
"title": "Articles récents",
|
||||||
"subtitle": "Les dernières publications sur le développement de plugins Hytale",
|
"subtitle": "Les dernières publications sur le développement de plugins Hytale",
|
||||||
|
|||||||
+8
-1
@@ -1,6 +1,13 @@
|
|||||||
export default defineNuxtConfig({
|
export default defineNuxtConfig({
|
||||||
compatibilityDate: '2026-04-21',
|
compatibilityDate: '2026-04-21',
|
||||||
ssr: true,
|
ssr: true,
|
||||||
|
// Workaround for nuxt/nuxt#33987: esbuild zombie from fontless (@nuxt/ui → @nuxt/fonts)
|
||||||
|
// keeps the Node process alive after "Build complete!", causing Docker builds to hang.
|
||||||
|
hooks: {
|
||||||
|
close: () => {
|
||||||
|
process.exit(0)
|
||||||
|
},
|
||||||
|
},
|
||||||
css: ['~/assets/css/main.css'],
|
css: ['~/assets/css/main.css'],
|
||||||
modules: [
|
modules: [
|
||||||
'@nuxt/ui',
|
'@nuxt/ui',
|
||||||
@@ -30,7 +37,7 @@ export default defineNuxtConfig({
|
|||||||
},
|
},
|
||||||
site: {
|
site: {
|
||||||
url: 'https://killiandalcin.fr',
|
url: 'https://killiandalcin.fr',
|
||||||
name: "Killian' DAL-CIN - Developpeur Full Stack",
|
name: "Killian' DAL-CIN - Hytale Plugin Developer",
|
||||||
},
|
},
|
||||||
sitemap: {
|
sitemap: {
|
||||||
sources: ['/api/__sitemap__/urls'],
|
sources: ['/api/__sitemap__/urls'],
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 915 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 322 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 285 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500">
|
||||||
|
<rect width="500" height="500" style="fill: rgb(12, 17, 29);"/>
|
||||||
|
<text style="fill: rgb(136, 172, 217); font-family: "Microsoft Sans Serif"; font-size: 411.6px; font-weight: 700; white-space: pre;" x="111.729" y="396.341">V</text>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 352 B |
@@ -73,18 +73,6 @@ export interface SocialLink {
|
|||||||
username?: string
|
username?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface FiverrService {
|
|
||||||
id: string
|
|
||||||
url: string
|
|
||||||
image: string
|
|
||||||
price: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface FiverrConfig {
|
|
||||||
profileUrl: string
|
|
||||||
services: FiverrService[]
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface PricingTier {
|
export interface PricingTier {
|
||||||
id: string
|
id: string
|
||||||
priceFixed: string | null
|
priceFixed: string | null
|
||||||
@@ -100,7 +88,6 @@ export interface SiteConfig {
|
|||||||
author: string
|
author: string
|
||||||
contact: ContactInfo
|
contact: ContactInfo
|
||||||
social: SocialLink[]
|
social: SocialLink[]
|
||||||
fiverr: FiverrConfig
|
|
||||||
url: string
|
url: string
|
||||||
seo: {
|
seo: {
|
||||||
defaultImage: string
|
defaultImage: string
|
||||||
|
|||||||
Reference in New Issue
Block a user