gpatruno 02d2af0993
Build / build (push) Has been cancelled
inventory update
2026-06-05 20:33:23 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 20:33:23 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 20:33:23 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 20:33:23 +02:00
2026-06-05 15:00:58 +02:00
2026-06-05 15:00:58 +02:00

Hytale MMORPG

Plugin serveur Hytale pour un MMORPG persistant : profils joueurs, progression et fondations modulaires pour l'économie, les quêtes et les guildes.

Prérequis

  • JDK 25+ (Java 26 recommandé si JDK 25 indisponible)
  • Gradle via le wrapper inclus (./gradlew)
  • Serveur Hytale (binaire ou ./gradlew runServer via ScaffoldIt)

Démarrage rapide

# 1. Indiquer où Hytale est installé (launcher officiel)
cp hytale.properties.example hytale.properties
# Éditer hytale.home_path (voir exemples dans le fichier)

# 2. Compiler puis lancer le serveur de dev (Java 25 forcé)
./start-server.sh

Si le serveur a déjà planté sans assets, réinitialisez le monde de dev :

HYTALE_RESET_DEVSERVER=1 ./start-server.sh

Ou manuellement :

# Compiler le plugin (JAR avec SQLite + Gson embarqués)
JAVA_HOME=/usr/lib/jvm/java-25-openjdk ./gradlew build

# Lancer le serveur de développement
JAVA_HOME=/usr/lib/jvm/java-25-openjdk ./gradlew runServer

Le JAR produit se trouve dans build/libs/hytale-mmorpg-0.1.0.jar (nom selon version Gradle).

Déploiement manuel

  1. Copier le JAR dans le dossier mods/ du serveur Hytale
  2. Redémarrer le serveur
  3. La configuration est générée dans le répertoire de données du plugin : mods/com.disklexar_MMORPG/config.json

Systèmes MMORPG

Système Contenu Effet
Classes Chevalier (knight) Armes : Épée longue, Hache de bataille. 3 capacités (Charge/dash+étourdissement 3s, Toupie 3s, Cri de guerre : repousse + 20% résistance 20s, bonus si étourdi).
Pouvoirs (passifs, aucun par défaut) Sprinteur (sprinter), Résilient (resilient) +10% vitesse hors combat / +10% dégâts 5s après avoir été touché.
Métiers Tueur de monstre (monster_slayer), Mineur (miner) +1 money par monstre tué / +1 money par bloc cassé.
Groupes Partage d'XP Les membres reçoivent 40% de l'XP gagnée sur un kill.
Races Humain (human, par défaut) XP ×2.

Effets de combat : dash, étourdissement, toupie, knockback et le buff de vitesse sont implémentés via les APIs serveur (Velocity, TransformComponent, MovementManager, TargetUtil, DamageSystems). Les valeurs (distances, forces, dégâts) sont des constantes à ajuster en jeu.

Commandes

Commande Description
/mmorpg help Affiche l'aide
/mmorpg profile Résumé court (niveau, XP)
/mmorpg info Toutes vos informations (chat)
/mmorpg menu Menu joueur MMORPG — onglets Personnage, Inventaire, Compétences
/mmorpg inventory Même menu, ouvert directement sur l'onglet Inventaire
/mmorpg class <choisir|quitter|info> [classe] Gérer votre classe
/mmorpg power <recevoir|retirer|info> [pouvoir] Gérer vos pouvoirs
/mmorpg job <rejoindre|quitter|info> [metier] Gérer vos métiers
/mmorpg group <inviter|accepter|quitter|kick|info> [joueur] Gérer votre groupe
/mmorpg ability <1|2|3> Utiliser une capacité de classe
Touches Use Ability 1/2/3 Même effet que la commande ci-dessus (si vous avez une classe)

Capacités de classe (touches Ability 1/2/3)

Les armes vanilla possèdent leurs propres compétences sur les slots Ability. Le plugin les remplace dès qu'un joueur a choisi une classe MMORPG :

  1. Filtre de paquets (SyncInteractionChains) — intercepte Ability 1/2/3 avant le moteur vanilla, envoie CancelInteractionChain au client et lance la capacité de classe.
  2. Interaction native (mmorpg_cast_ability) — enregistrée côté serveur ; les patches d'items dans src/main/resources/Server/Item/Items/ remplacent Ability1/2/3 sur les armes de test (sync client/serveur).

Prérequis en jeu : /mmorpg class choisir <classe> puis équiper une arme autorisée pour cette classe. Sans classe, les compétences vanilla de l'arme s'appliquent normalement.

Pour ajouter d'autres armes, copiez un patch JSON existant (ex. Weapon_Longsword_Mithril.json) en ne gardant que "Id" et "Interactions".

/mmorpg menu ouvre une CustomUIPage listant toutes les infos du joueur (classe, race, pouvoirs, métiers, groupe, money, temps de jeu, dates…). Un plugin serveur seul ne peut pas ajouter un bouton dans l'écran d'inventaire natif ; les équivalents fournis sont la commande /mmorpg menu et l'interaction mmorpg_player_info (voir assetpack/README.md pour brancher un asset .ui).

Configuration

Fichier config.json (valeurs par défaut dans src/main/resources/config.json) :

Clé Description
Debug Logs détaillés
DefaultLevel Niveau initial des nouveaux joueurs
MaxPlayers Limite prévue (référence future)
BaseXpPerLevel XP de base requise par niveau
KillExperience XP de base accordée par monstre tué
Database.FileName Fichier SQLite (mmorpg.db)
Features.Economy Active le module économie
Features.Quests Active le module quêtes (M3)
Features.Guilds Active le module guildes (M4)

Base de données

player_profiles ajoute : class_id, powers (JSON), jobs (JSON), guild_id, group_id, is_connected, total_time_play, last_date_connected, date_creation, money, race_id. Tables de dépendance : classes, powers, jobs, races, groups, group_members. Les migrations sont versionnées via schema_migrations (voir db/migrations/).

Structure du projet

src/main/java/com/disklexar/mmorpg/
├── MmorpgPlugin.java       # Point d'entrée (commandes + systèmes ECS)
├── bootstrap/              # Initialisation et registre de services
├── core/                   # Config et contrats
├── player/                 # Sessions, profils, registre des joueurs en ligne, vue d'infos
├── persistence/            # SQLite (migrations versionnées, repositories)
├── command/                # Commandes /mmorpg (class, power, job, group, ability, info, menu)
├── events/                 # Connexion / déconnexion, filtre paquets Ability 1/2/3
├── interaction/            # mmorpg_cast_ability (interaction native asset pack)
├── progression/            # XP et niveaux (multiplicateurs de race)
├── economy/                # Monnaie (money)
├── rpg/                    # clazz (classes) · power · job · race · group
├── combat/                 # Capacités, état de combat, effets passifs, planificateur
│   └── system/             # Systèmes ECS : dégâts, morts/kills, casse de bloc
├── ui/                     # AbilityBarHud, PlayerMenuPage, PlayerInfoPage
├── quest/                  # Stub (M3)
└── social/                 # Stub (M4)

Documentation

Custom UI (Hytale)

Documentation officielle et guides communautaires utiles pour les assets .ui et les pages serveur :

Licence

MIT — voir LICENSE.

S
Description
No description provided
Readme MIT 222 MiB
Languages
Java 68.2%
HTML 21.4%
JavaScript 4.9%
EJS 2.7%
CSS 1.9%
Other 0.9%