Aller au contenu
EchoPulse banner
EchoPulse

EchoPulse

Paper

par hohotutecalme.• Minecraft 1.21.11

0 2 0
admin
chat
protection

About this plugin

Tu es un développeur Minecraft expert (Java), spécialisé Paper + Velocity, et web embarqué. Objectif : créer un système audio “zone-based” 100% self-hosted, sans service externe. NOM PROJET - Nom: RD_AudioNetwork (modifiable) - Deux plugins : 1) RD_AudioNetwork-Velocity (central) 2) RD_AudioNetwork-Paper (zone engine) EXIGENCES PRINCIPALES 1) ARCHITECTURE NETWORK - Le web est CENTRAL et hébergé UNIQUEMENT sur Velocity. - Tous les serveurs Paper envoient les événements de zones au proxy Velocity. - Communication Paper -> Velocity via Plugin Messaging Channel (Velocity standard). - Nginx sera utilisé en prod pour HTTPS (reverse proxy vers le port HTTP du Velocity). Le plugin n’a pas besoin de TLS interne. 2) WEB EMBARQUÉ DANS LE PLUGIN VELOCITY - Le plugin Velocity doit embarquer et servir un site web: - Web Player: /p/<token> (lecteur joueur) - Web Admin: /admin (interface admin) - Le plugin Velocity doit exposer : - HTTP server interne (ex: port 8123 configurable) - WebSocket /ws pour push temps réel vers les clients web - API REST /api/* pour login admin, library, zones, règles, état live - Static files (HTML/CSS/JS) packagés dans le jar et servis par le serveur web interne. - Le Player Web doit fonctionner sans mod Minecraft (navigateur). - Contraintes navigateur: autoplay bloqué => 1er clic “Activer l’audio”. Après, stockage localStorage/cookie pour relancer auto. 3) SYSTÈME DE ZONES CÔTÉ PAPER (100% IN-GAME) - Création de zone full in-game avec un wizard: /rdaudio zone create <name> /rdaudio zone pos1 /rdaudio zone pos2 /rdaudio zone pos3 /rdaudio zone pos4 /rdaudio zone ymin <value> /rdaudio zone ymax <value> /rdaudio zone preview /rdaudio zone confirm /rdaudio zone cancel - Une zone est un polygone 2D (XZ) défini par 4 points + une plage Y (ymin/ymax). - Prévisualisation: particules sur les 4 points + arêtes du polygone au sol (et optionnel “murs” verticaux). - Confirm -> enregistre la zone et la synchronise au Velocity. - Détection entrée/sortie: - Calcul “point in polygon” sur XZ + check Y - Optim: ne recalculer que si le joueur change de bloc ou de chunk - Cache: indexation par chunk / AABB pour limiter le nombre de zones testées 4) ASSIGNATION AUDIO + PRIORITÉS (CÔTÉ VELOCITY VIA WEB ADMIN) - Web Admin permet: - Upload de sons (mp3/ogg) dans une librairie - Aperçu play/pause - Tags / catégories - Assigner un track/playlist à une zone - Définir une priorité par zone (int) - Définir fadeIn/fadeOut/crossfade (ms) - Activer/désactiver une zone - Règle: si plusieurs zones actives, la zone avec la priorité la plus haute gagne. - Types audio: - Loop ambiance (musique de fond) - One-shot / stinger (optionnel V1 ou V1.1) déclenché à l’entrée 5) WEB PLAYER (Joueur) - URL: /p/<token> - UI minimal: - Bouton “Activer l’audio” - Volume slider + mute - Affiche “Zone actuelle” - Lecture via HTML5 Audio ou WebAudio API - Support crossfade entre pistes selon config - Doit recevoir les événements via WebSocket (zone enter/leave + track à jouer) 6) AUTH / TOKENS / SÉCURITÉ - /api/player/link : génération token joueur signé (HMAC) lié à UUID + expiration (ex: 24h) + rotation possible - Le plugin Paper envoie au joueur un message cliquable / commande /music qui donne l’URL /p/<token> - Admin login: - Mot de passe configuré dans config.yml (hashé si possible) - Session admin token (cookie) - Protection upload: - Limite taille - Validation extension (mp3/ogg) - Empêcher traversal path - Rate limit simple sur API (optionnel) 7) PERSISTENCE - V1: - Velocity stocke tout dans SQLite OU JSON (au choix, mais proposer SQLite recommandé) - Zones par serveurId + monde + points + ymin/ymax + priority + trackId + enabled - Library: fichiers stockés sur disque (plugins/RD_AudioNetwork/media/) - Paper stocke localement: - Cache zones reçues du Velocity + zones en édition - Synchronisation: - Paper -> Velocity : envoi des zones confirmées + events entrée/sortie - Velocity -> Paper : envoi des zones à jour (quand admin modifie via web) 8) ÉVÉNEMENTS NETWORK (FORMAT) - Messages Paper -> Velocity: - ZONE_CREATED / ZONE_UPDATED / ZONE_DELETED (sur confirm / delete) - PLAYER_ZONE_ENTER {uuid, serverId, zoneId} - PLAYER_ZONE_LEAVE {uuid, serverId, zoneId} - PLAYER_SERVER_CHANGE {uuid, fromServerId, toServerId} (optionnel si utile) - Velocity -> WebSocket Player: - PLAY {trackUrl, loop, fadeInMs, crossfadeMs, volume} - STOP {fadeOutMs} - STATUS {zoneName, trackName} 9) QUALITÉ / LIVRABLES - Fournir code complet prêt à build (Gradle recommandé). - Fournir README: - Installation Paper + Velocity - Config proxy + port web - Nginx reverse proxy exemple (HTTPS) - Commandes in-game + permissions - Structure dossiers media/web - Logs propres + mode debug. - Permissions: - rdaudio.admin (création zones) - rdaudio.link (obtenir le lien player) CONTRAINTES - Compatible Minecraft Paper 1.21.x (et Velocity 3.x). - Aucun service externe obligatoire. - Nginx sera utilisé pour HTTPS en prod, donc le plugin sert en HTTP local. PLAN DE DÉVELOPPEMENT (V1) 1) Velocity: HTTP server + static web + WS + token player 2) Paper: wizard zone + preview particules + point-in-polygon + enter/leave events 3) Velocity: admin API + upload + storage + assignation zone->track + priorité 4) Web Player: lecture + crossfade + UI 5) Web Admin: library + zones + rules + live view 6) Sync zones Velocity -> Paper Donne une architecture de packages Java propre, les classes principales, et commence par coder le squelette complet (Velocity + Paper + web assets), puis implémente les features V1.

Compatibility

EchoPulse is compatible with Paper 1.21.11 servers and requires Java 17. This plugin was created with Minax AI and is available for free.

Similar plugins

    Nous utilisons Google Analytics, Microsoft Clarity et Reddit Pixel pour analyser l'utilisation du site et améliorer votre expérience. En savoir plus