Comment faire pour que les joueurs entende autour de moi le son que j'active



  • Bonsoir,
    j'aimerai savoir comment faire pour que les joueurs autour de moi puisse entendre mon son.
    Merci!
    PS: En Multijoueur.

    code:

    @SubscribeEvent
    public void onEvent(KeyInputEvent event)
    {
    if(keyBindPolice.isPressed())
    {
    keyTestTyped();
    }
    
    }
    private void keyTestTyped()
    {
    EntityPlayer player = Minecraft.getMinecraft().thePlayer;
    MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
    World world = FMLClientHandler.instance().getWorldClient();
            int playerX = MathHelper.floor_double(player.posX);
            int playerZ = MathHelper.floor_double(player.posZ);
            for(int x = playerX - 3; x < playerX + 3; x++)
            {
                for(int z = playerZ - 3; z < playerZ + 3; z++)
                {
                    if(x != playerX && z != playerZ)
                    {
    
                    if(player.capabilities.isCreativeMode){
                    if(player.inventory.hasItem(AltisMineMod.GyroPolice)){
    
                    if(true){
                    Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("amm:AK47Shoot"), 1.0F));
                    }
                }
            }
    


  • Il y a déja eu un sujet sur ca il me semble .. cherche un peu sur le forum 🙂



  • Y'a pas moyen de me passé un lien plz^^ ?



  • @'floriangabet':

    Y'a pas moyen de me passé un lien plz^^ ?

    Euuh c'est sérieux la ? x)))) Bon je te le passe car je suis gentil :

    http://www.minecraftforgefrance.fr/showthread.php?tid=2341&page=2&highlight=Sounds



  • Justement j'utilise se code mais mon pote entend pas le son..



  • @'floriangabet':

    Justement j'utilise se code mais mon pote entend pas le son..

    Tu dois te tromper quelques part .. Re vérifie car normalement ca doit marcher.



  • Bah non je crois pas car ils ont pris le son d'un bouton menu de minecraft hors le bouton menu y'a que toi qui l'entend pas les joueurs autour .


  • Administrateurs

    Ce code joue le son uniquement coté client.
    Si tu veux que tout le monde l'entendent, il faut envoyer un paquet au serveur lorsque tu appuies sur la touche, puis côté serveur il faut utiliser world.playSoundAtEntity. (qui va renvoyer un paquet à tous les joueurs autours et donc tous les joueurs autour vont entendre le son).



  • Euhh tu peux m'expliqué mieux ou m'envoyer vers un tuto comprend pas …


  • Administrateurs

    Il y a un tutoriel écrit sur les paquets sur le forum et deux tutoriels en vidéos sur la chaine youtube.



  • Je comprend rien… je part en vacances demain quand je rentre j'essaye



  • Bonjour,

    alors j'ai pas trop bien compris le tutoriel du coup si vous pouvez m'aider en m'indiquant le code merci.
    Je suis bloquer je ne sais pas quoi faire .

    Pour info j'ai pas de son quand je presse ma touche.

    Alors mes code ressemble a ça:

    Main Class:

    public static SimpleNetworkWrapper samu;
    
         samu = NetworkRegistry.INSTANCE.newSimpleChannel("amm");
    
        samu.registerMessage(PacketSamu.Handler.class, PacketSamu.class, 0, Side.SERVER);
    

    Packet Samu:

    import net.minecraft.entity.player.EntityPlayerMP;
    import net.minecraft.world.World;
    import io.netty.buffer.ByteBuf;
    import cpw.mods.fml.client.FMLClientHandler;
    import cpw.mods.fml.common.network.simpleimpl.IMessage;
    import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
    import cpw.mods.fml.common.network.simpleimpl.MessageContext;
    
    public class PacketSamu implements IMessage{
    private boolean samu;
    public PacketSamu(){
    
    }
    public PacketSamu(boolean samu, int x, int y, int z){
    this.samu = samu;
    }
    
    @Override
    public void fromBytes(ByteBuf buf) {
    this.samu = buf.readBoolean();
    
    }
    
    @Override
    public void toBytes(ByteBuf buf) {
    buf.writeBoolean(this.samu);
    
    }
    
    public static class Handler implements IMessageHandler <packetsamu, imessage="">{
    
    @Override
    public IMessage onMessage(PacketSamu message, MessageContext ctx) {
    EntityPlayerMP player = ctx.getServerHandler().playerEntity;
    World world = FMLClientHandler.instance().getWorldClient();
    if(player.capabilities.isCreativeMode){
            if(player.inventory.hasItem(AltisMineMod.GyroSamu)){
    
            if(true){
            world.playSoundAtEntity(player, "amm:BarrettShoot:", 1.0F, 1.0F);
            }
    
    }
            }
    return null;
    }
    
    }
    
    }
    

    Client Proxy avec la touche pour activé le son:

    @SubscribeEvent
    public void onEvent4(KeyInputEvent event)
    {
    if(keyBindSamu.isPressed())
    {
    keyTestTyped3();
    }
    
    }
    private void keyTestTyped3()
    {
    EntityPlayer player = Minecraft.getMinecraft().thePlayer;
    MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
    World world = FMLClientHandler.instance().getWorldClient();
       {
           int playerX = MathHelper.floor_double(player.posX);
           int playerZ = MathHelper.floor_double(player.posZ);
           for(int x = playerX - 3; x < playerX + 3; x++)
           {
               for(int z = playerZ - 3; z < playerZ + 3; z++)
               {
                   if(x != playerX && z != playerZ)
                   {
                    if(player.capabilities.isCreativeMode){
                    if(player.inventory.hasItem(AltisMineMod.GyroSamu)){
    
                    if(true){
    
                   }
               }
                    }
                   }
               }
    
           }
    
       }
    }
    
    }
    
    

    Merci d'avance Flo.</packetsamu,>



  • Apprends le java, ton code est un gros bordel : if(true) est inutile



  • Ah oui j'avais pas vu que j'ai rien mis , je dois mettre quoi comme code pour que ça joue un son et que les joueurs l'entende dans un rayon de 30 blocs



  • Tu l'envoi quand le paquet ?



  • justement j'ai pas lié le packet avec le clientproxy c'est quoi le code pour le lié



  • NETWORK.sendToServer(toNPaquet) il me semble



  • j'ai trouvé ça :

    AltisMineMod.samu.sendToServer(new PacketSamu());
    

    Toujours pas de son .



  • Renvoi le ClientProxy et la classe du paquet



  • Alors:

    Client Proxy:

    
    private static KeyBinding keyBindSamu;
    
    keyBindSamu = new KeyBinding("keyBindSamu.key", Keyboard.KEY_G, "key.categories.gameplay");
    
    ClientRegistry.registerKeyBinding(keyBindSamu);
    
    @SubscribeEvent
    public void onEvent4(KeyInputEvent event)
    {
    if(keyBindSamu.isPressed())
    {
    keyTestTyped3();
    }
    
    }
    private void keyTestTyped3()
    {
    EntityPlayer player = Minecraft.getMinecraft().thePlayer;
    MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
    World world = FMLClientHandler.instance().getWorldClient();
       {
           int playerX = MathHelper.floor_double(player.posX);
           int playerZ = MathHelper.floor_double(player.posZ);
           for(int x = playerX - 3; x < playerX + 3; x++)
           {
               for(int z = playerZ - 3; z < playerZ + 3; z++)
               {
                   if(x != playerX && z != playerZ)
                   {
                    if(player.capabilities.isCreativeMode){
                    if(player.inventory.hasItem(AltisMineMod.GyroSamu)){
    
                    if(true){
                    AltisMineMod.samu.sendToServer(new PacketSamu());
    
                   }
               }
                    }
                   }
               }
    
           }
    
       }
    }
    
    }
    

    Packet:

    public class PacketSamu implements IMessage{
    private boolean samu;
    public PacketSamu(){
    
    }
    public PacketSamu(boolean samu, int x, int y, int z){
    this.samu = samu;
    }
    
    @Override
    public void fromBytes(ByteBuf buf) {
    this.samu = buf.readBoolean();
    
    }
    
    @Override
    public void toBytes(ByteBuf buf) {
    buf.writeBoolean(this.samu);
    
    }
    
    public static class Handler implements IMessageHandler <packetsamu, imessage="">{
    
    @Override
    public IMessage onMessage(PacketSamu message, MessageContext ctx) {
    EntityPlayerMP player = ctx.getServerHandler().playerEntity;
    World world = FMLClientHandler.instance().getWorldClient();
    if(player.capabilities.isCreativeMode){
            if(player.inventory.hasItem(AltisMineMod.GyroSamu)){
    
            if(true){
            world.playSoundAtEntity(player, "amm:BarrettShoot", 1.0F, 1.0F);
            System.out.println("Test");
            }
    
    }
            }
    return null;
    }
    
    }
    
    }
    
    ```</packetsamu,>