Skip to content
Nathanael edited this page Sep 14, 2020 · 10 revisions

Il est en effet possible, et très simple de développer des addons pour ModularVoiceChat!

Développer un addon

Un addon ModularVoiceChat est avant-tout un mod Forge à part entière. En effet, vous intéragirez avec le mod, et le vocal via des events! Il est donc nécessaire d'être un minimum expérimenté dans la création de mods, et familiarisé avec le système d'evènement de forge.

Ajout du mod à sa workspace

Pour ce faire, il va vous falloir éditer votre build.gradle afin d'y ajouter les éléments suivants:

repositories{
    maven{
        name = "CurseForge"
        url = "https://minecraft.curseforge.com/api/maven/"
    }
}
dependencies {
    compile 'modularvoicechat:ModularVoiceChat:VERSION'
    //For example: compile 'modularvoicechat:ModularVoiceChat:BETA:1.2'
    // replace "-" by ":"
    // Remplacez les "-" par des ":", par exemple ModularVoiceChat-BETA-1.2 devient ModularVoiceChat:BETA:1.2

}

Les events

Afin de modifier et ajouter des fonctionnalités au vocal, vous devez utiliser des events. A ce titre, il y en a des divers et variés pour chaque étape du transfert de voix, afin de vous laisser le plus libre dans la customisation!

Pour chaque event, la catégorie sera divisée en deux parties. Celle contenant les variables (que l'on peut get, et set via des getters et des setters), et les méthodes, que l'on peut utiliser pour différentes choses.


HearDistanceEvent (Serveur)

Cet event vous permet ni plus ni moins de modifier la distance à laquelle un joueur peut être entendu. En effet, il est appelé lors du test de distance si le mode choisi est distanced.

Variables

  • EntityPlayer speaker: Le joueur qui parle
  • EntityPlayer hearer: Le joueur qui va (selon la distance donnée) entendre (ou pas lol)
  • int distance: simplement la distance à laquelle le joueur peut être entendu.

VoiceServerStartEvent (Serveur)

Grâce à cet event, qui est appelé lors du lancement du serveur vocal, vous pouvez définir un IVoiceDispatcher custom. Prenez exemple sur les classes DistanceBasedVoiceDispatcher et GlobalVoiceDispatcher.

Variables

  • VoiceServer server: Le serveur qui se lance
  • IVoiceDispatcher dispatcher: Le voicedispatcher

VoiceDispatchEvent (Serveur)

Cet event est appelé quand la voix d'un joueur est répartie entre tous les autres. Il va vous permettre d'envoyer la voix de ce dernier aux joueurs de votre choix. En annulant cet event, vous annulez la répartition par défaut, il faudra donc créer la votre via les différentes méthodes disponibles. Cet évènement est annulable.

Il est très déconseillé d'annuler cet évent au risque de rendre votre addon incompatible avec beaucoup d'autres. Ne l'annulez que si vous souhaitez refaire entièrement le dispatch des voix.

Variables

  • EntityPlayer speaker: Le joueur qui parle
  • VoiceServer voiceServer: Le serveur vocal sur lequel est diffusé la voix.
  • VoiceProperties voiceProperties: Les propriétées que vous voulez appliquées au packet audio.

Méthodes

  • EntityPlayer dispatchTo: Permet d'envoyer la voix en question au joueur donné.

  • EntityPlayer, int dispatchTo: Permet d'envoyer la voix en question au joueur donné, avec un volume (sur 100) donné.

  • EntityPlayer, int, VoiceProperties dispatchTo: Permet d'envoyer la voix en question au joueur donné, ave un volume (sur 100) donné, et une VoiceProperties (voir explication plus bas) custom.

  • void dispatchToAll: Permet d'envoyer la voix à tous les joueurs.

  • int dispatchToAll: Permet d'envoyer la voix à tous les joueurs, avec un volume (sur 100) donné.

  • int, VoiceProperties dispatchToAll: Permet d'envoyer la voix à tous les joueurs, avec un volume (sur 100) donné, et une VoiceProperties (voir explication plus bas) custom.

StartVoiceRecordEvent (Client)

Cet event est appelé juste avant que le joueur ne commence à parler. L'évènement ne peut pas être annulé.


StopVoiceRecordEvent (Client)

Cet event est appelé juste après que le joueur ai cessé de parler. L'évènement ne peut pas être annulé.


VoiceRecordEvent (Client)

Cet event est appelé juste avant qu'un packet audio soit envoyé au serveur. Vous pouvez l'utiliser pour appliquer des modifications à l'audio. (Cela nécessite des connaissances en manipulation d'audio.) L'évènement peut être annulé.

Variables

  • byte[] recordedSamples: Les données audio qui vont être envoyées au serveur sous forme d'un tableau de byte.

VoicePlayEvent

Cet event est appelé juste avant que la voix d'un joueur soit lue. Vous pouvez l'utiliser pour appliquer des modifications à l'audio. (Cela nécessite des connaissances en manipulation d'audio.) Vous pouvez aussi modifier le volume auquel l'audio sera joué. L'évènement peut être annulé.

Variables

  • byte[] recordedSamples: Les données audio qui vont être envoyées au serveur sous forme d'un tableau de byte.
  • int volume: Le volume (sur 100) auquel sera joué l'audio reçu.
  • VoiceProperties properties: les propriétées assignées à l'audio lors du VoiceDispatchEvent.

VoiceProperties

Cet objet qui est envoyé en accompagnement de chaque audio du serveur au client, permet via le VoiceDispatchEvent de définir des propriétées qui pourront être lues dans le VoicePlayEvent, permettant ainsi d'appliquer des modifications en conséquence.

VoiceProperties peut contenir des booleans, ainsi que des entiers.

Créer une VoiceProperties

Vous pouvez créer un objet VoiceProperties grâce à VoiceProperties.builder().with("keyInt", 1).with("keyBoolean", true).build();

Modifier une VoiceProperties

Vous pouvez aussi éditer un objet VoiceProperties grâce au diverses options contenues dans la classe.