MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    [1.7.10 ] [SoundManager] Petit problème pour récupérer une information.

    Planifier Épinglé Verrouillé Déplacé Sans suite
    19 Messages 3 Publieurs 2.8k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • aurelien974A Hors-ligne
      aurelien974
      dernière édition par

      Le problème c’est que en multijoueur SoundManager existe pas 😕

      j’ai réglé les problème pour le multijoueur pour pas ça crash mais je sais pas comment faire pour que la musique fonctionne en multijoueur…

      Mon Main

      package re.aurelien.mod;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.audio.ISound;
      import net.minecraft.client.audio.SoundManager;
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.item.Item;
      import net.minecraft.item.Item.ToolMaterial;
      import net.minecraftforge.client.event.sound.SoundLoadEvent;
      import net.minecraftforge.common.MinecraftForge;
      import net.minecraftforge.common.util.EnumHelper;
      import re.aurelien.mod.MusicBlock.MusicBlock;
      import re.aurelien.mod.MusicBlock.TileEntityMusicBlock;
      
      import java.lang.reflect.Field;
      
      import com.google.common.collect.HashBiMap;
      
      import cpw.mods.fml.common.FMLCommonHandler;
      import cpw.mods.fml.common.Mod;
      import cpw.mods.fml.common.Mod.EventHandler;
      import cpw.mods.fml.common.Mod.Instance;
      import cpw.mods.fml.common.SidedProxy;
      import cpw.mods.fml.common.event.FMLInitializationEvent;
      import cpw.mods.fml.common.event.FMLPostInitializationEvent;
      import cpw.mods.fml.common.event.FMLPreInitializationEvent;
      import cpw.mods.fml.common.eventhandler.SubscribeEvent;
      import cpw.mods.fml.common.network.NetworkRegistry;
      import cpw.mods.fml.common.registry.GameRegistry;
      import cpw.mods.fml.relauncher.Side;
      import cpw.mods.fml.relauncher.SideOnly;
      
      @Mod(modid = AurelienMod.MODID, version = AurelienMod.VERSION)
      public class AurelienMod
      {
      public static HashBiMap <string, isound="">playing = null;
      
      public static ToolMaterial SuperMaterial = EnumHelper.addToolMaterial("SuperMaterial", 5, 1000, 15.0F, 20.0F, 30);
         public static final String MODID = "aurelienmod";
         public static final String VERSION = "0.0.1";
      
         Item ItemSwordSkyQueen;
      
      public static Item ItemSwordAurelien;
      
         @Instance(MODID)
         public static AurelienMod instance;
      
         @SidedProxy(clientSide = "re.aurelien.mod.client.ClientProxy", serverSide = "re.aurelien.mod.CommonProxy")
         public static CommonProxy proxy;
      
         public static Block _MusicBlock;
      
         @EventHandler
         public void preinit(FMLPreInitializationEvent event)
         {
             ItemSwordSkyQueen = new ItemSword_SkyQueen(SuperMaterial).setCreativeTab(MyCreativeTabs);
             ItemSwordAurelien = new ItemSword_Aurelien(SuperMaterial).setCreativeTab(MyCreativeTabs);
      
             _MusicBlock = new  MusicBlock(Material.wood).setBlockName("MusicBlock").setBlockTextureName(AurelienMod.MODID + ":MusicBlock").setCreativeTab(MyCreativeTabs);
      
             GameRegistry.registerBlock(_MusicBlock, "MusicBlock");
          GameRegistry.registerTileEntity(TileEntityMusicBlock.class, "TileEntityMusicBlock");
      
          FMLCommonHandler.instance().bus().register(this);
          MinecraftForge.EVENT_BUS.register(this);
         }
      
         @SideOnly(Side.CLIENT)
         @SubscribeEvent
         public void onSoundsLoaded(SoundLoadEvent event)
         {
          SoundManager manager = null;
             try
             {
                 // handler -> manager -> playingList
      
                 // gets SoundHandler
                 net.minecraft.client.audio.SoundHandler handler;
                 Field field_handler = Minecraft.class.getDeclaredField("mcSoundHandler");
                 field_handler.setAccessible(true);
                 handler = (net.minecraft.client.audio.SoundHandler) field_handler.get(Minecraft.getMinecraft());
      
                 // gets SoundManager
                 Field field_manager = net.minecraft.client.audio.SoundHandler.class.getDeclaredField("sndManager");
                 field_manager.setAccessible(true);
                 manager = (SoundManager) field_manager.get(handler);
      
                 // gets playing list
                 Field field_playing = SoundManager.class.getDeclaredField("playingSounds");
                 field_playing.setAccessible(true);
                 AurelienMod.playing = (HashBiMap<string, isound="">) field_playing.get(manager);
      
             }
             catch (Exception ex)
             {
                 ex.printStackTrace();
             }
         }
      
      @EventHandler
         public void init(FMLInitializationEvent event)
         {
          NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandlerAurelienMod());
          proxy.registerRenderers();
         }
      
         @EventHandler
         public void postInit(FMLPostInitializationEvent event)
         {
      
         }
      
         public static CreativeTabs MyCreativeTabs = new CreativeTabs("SkyQueenMod") {
             @Override
             @SideOnly(Side.CLIENT)
             public Item getTabIconItem() {
                 return Item.getItemFromBlock(_MusicBlock);
             }
         };
      
      }
      

      TileEntityMusicBlock.java

      package re.aurelien.mod.MusicBlock;
      
      import com.google.common.collect.HashBiMap;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.audio.ISound;
      import net.minecraft.client.audio.ISound.AttenuationType;
      import net.minecraft.client.audio.SoundManager;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.inventory.ISidedInventory;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemRecord;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.nbt.NBTTagList;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.util.ResourceLocation;
      import net.minecraft.world.World;
      import net.minecraftforge.common.MinecraftForge;
      import re.aurelien.mod.AurelienMod;
      import sun.util.logging.resources.logging_fr;
      
      import java.lang.reflect.Field;
      
      public class TileEntityMusicBlock extends TileEntity implements ISidedInventory {
      
      private ItemStack[] contents = new ItemStack[9];
      
      private int indexMusic = 0;
      private int IdMusic;
         private ResourceLocation SoundPlayeResourceLocation;
         private boolean SoundPlaye = false;
      
         public void PlayeurList()
         {
            if(SoundPlaye == true)
        {
        if(this.contents[IdMusic] == null)
        {
       this.worldObj.playAuxSFX(1005, this.xCoord, this.yCoord, this.zCoord, 0);
       this.worldObj.playRecord((String)null, this.xCoord, this.yCoord, this.zCoord);
        }
      
        boolean d = isSoundPlaying(SoundPlayeResourceLocation);
        if(d == false)
        {
        System.out.println("On passe le cd !");
        if(indexMusic < 7)
        {
        indexMusic = indexMusic + 1;
        }
        else
        {
        indexMusic = 0;
        }
      
        SoundPlaye = false;
        }
        }
        else
        {
        try
      {
        if(this.contents[indexMusic] != null)
        {
        PlayeMusic(indexMusic);
        }
        else
        {
        if(indexMusic < 7)
        {
        indexMusic = indexMusic + 1;
        }
        else
        {
        indexMusic = 0;
        }
        }
      }
      catch(Exception ex)
      {
      System.out.println(ex);
      }
        }
      
         }
      
      private void PlayeMusic(int index)
      {
      System.out.println("Play : " + index);
            if (AurelienMod.playing != null)
             {
      if(SoundPlaye != true)
      {
      
      Item item = contents[index].getItem();
      ItemRecord ItemRecord = (ItemRecord) item;
      
      String Name = ItemRecord.recordName;
      String RecordResource = ItemRecord.getRecordResource(Name).toString();
      RecordResource = RecordResource.replace("minecraft:","minecraft:records.");
      this.SoundPlayeResourceLocation = new ResourceLocation(RecordResource);
      
      this.IdMusic = index;
      System.out.println("Play : " + RecordResource);
      
      this.worldObj.playAuxSFXAtEntity((EntityPlayer)null, 1005, this.xCoord, this.yCoord, this.zCoord, Item.getIdFromItem(item));
      SoundPlaye = true;
      }
             }
      }
      
      private boolean isSoundPlaying(ResourceLocation res)
      {
             if (AurelienMod.playing != null)
             {
                 ISound[] array_playing = AurelienMod.playing.values().toArray(new ISound[AurelienMod.playing.values().size()]);
                 for (int i = 0; i < array_playing.length; i++)
                 {
                  //System.out.println(array_playing*.getPositionedSoundLocation() + "==" + res );
                     if (array_playing*.getPositionedSoundLocation().equals(res))
                     {
                   return true;
                     }
                 }
             }
             return false;
         }
      
      public void readFromNBT(NBTTagCompound nBTTagCompound)
      {
      super.readFromNBT(nBTTagCompound);
      
      NBTTagList var2 = nBTTagCompound.getTagList("Items", 10);
             this.contents = new ItemStack[this.getSizeInventory()];
      
             for (int var3 = 0; var3 < var2.tagCount(); ++var3)
             {
                 NBTTagCompound var4 = var2.getCompoundTagAt(var3);
                 byte var5 = var4.getByte("Slot");
      
                 if (var5 >= 0 && var5 < this.contents.length)
                 {
                     this.contents[var5] = ItemStack.loadItemStackFromNBT(var4);
                 }
             }
      }
      
      public void writeToNBT(NBTTagCompound nBTTagCompound)
      {
      super.writeToNBT(nBTTagCompound);
      NBTTagList var2 = new NBTTagList();
      
             for (int var3 = 0; var3 < this.contents.length; ++var3)
             {
                 if (this.contents[var3] != null)
                 {
                     NBTTagCompound var4 = new NBTTagCompound();
                     var4.setByte("Slot", (byte)var3);
                     this.contents[var3].writeToNBT(var4);
                     var2.appendTag(var4);
                 }
             }
      
             nBTTagCompound.setTag("Items", var2);
      }
      
      @Override
         public void updateEntity()
         {
      this.worldObj.scheduleBlockUpdate(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 5);
         }
      
      @Override
      public int getSizeInventory() {
      return this.contents.length;
      }
      
      @Override
      public ItemStack getStackInSlot(int SlotIndex) {
      return this.contents[SlotIndex];
      }
      
      @Override
      public ItemStack decrStackSize(int Itemindex, int number)  {
      if (this.contents[Itemindex] != null)
             {
                 ItemStack itemStack;
                 if (this.contents[Itemindex].stackSize <= number)
                 {
                  itemStack = this.contents[Itemindex];
                     this.contents[Itemindex] = null;
                     return itemStack;
                 }
                 else
                 {
                  itemStack = this.contents[Itemindex].splitStack(number);
      
                     if (this.contents[Itemindex].stackSize == 0)
                     {
                         this.contents[Itemindex] = null;
                     }
      
                     return itemStack;
                 }
             }
             else
             {
                 return null;
             }
      }
      
      @Override
      public ItemStack getStackInSlotOnClosing(int SlotIndex) {
      if (this.contents[SlotIndex] != null)
             {
                 ItemStack var2 = this.contents[SlotIndex];
                 this.contents[SlotIndex] = null;
                 return var2;
             }
             else
             {
                 return null;
             }
      }
      
      @Override
      public void setInventorySlotContents(int slotIndex, ItemStack stack)  {
      this.contents[slotIndex] = stack; // met l'item stack dans le tableau
      
             if(stack != null && stack.stackSize > this.getInventoryStackLimit()) // si la taille de l'item stack dépasse la limite maximum de l'inventaire
             {
                 stack.stackSize = this.getInventoryStackLimit(); // on le remet sur la limite
             }
      
             this.markDirty(); // met à jour le tile entity
      }
      
      @Override
      public String getInventoryName() {
      return "tile.BlockLavaFabricator";
      }
      
      @Override
      public boolean hasCustomInventoryName() {
      // TODO Auto-generated method stub
      return false;
      }
      
      @Override
      public int getInventoryStackLimit()
      {
      return 1;
      }
      
      @Override
      public boolean isUseableByPlayer(EntityPlayer player)
      {
      return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : player.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
      }
      
      @Override
      public void openInventory() {
      
      }
      
      @Override
      public void closeInventory() {
      
      }
      
      @Override
      public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
      
      return true;
      }
      
      @Override
      public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
      
      return null;
      }
      
      @Override
      public boolean canInsertItem(int p_102007_1_, ItemStack p_102007_2_, int p_102007_3_) {
      
      return false;
      }
      
      @Override
      public boolean canExtractItem(int p_102008_1_, ItemStack p_102008_2_, int p_102008_3_) {
      
      return false;
      }
      
      }
      

      MusicBlock.java

      package re.aurelien.mod.MusicBlock;
      
      import java.util.Random;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.BlockContainer;
      import net.minecraft.block.material.Material;
      import net.minecraft.client.audio.ISound;
      import net.minecraft.entity.item.EntityItem;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemRecord;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.util.ResourceLocation;
      import net.minecraft.world.World;
      import re.aurelien.mod.AurelienMod;
      
      public class MusicBlock extends BlockContainer {
      
      public MusicBlock(Material p_i45386_1_) {
      super(p_i45386_1_);
      }
      
      @Override
      public void updateTick(World world, int x, int y, int z, Random rand)
      {
       TileEntityMusicBlock TileEntity = (TileEntityMusicBlock) world.getTileEntity(x, y, z);
       TileEntity.PlayeurList();
       world.scheduleBlockUpdate(x, y, z, this, 5);
      }
      
      @Override
      public boolean getTickRandomly() {
      return true;  
      }
      
      @Override
      public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int meta) {
      
      world.scheduleBlockUpdate(x, y, z, this, 5);
      return meta;
      }
      
      public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX,float hitY, float hitZ)
      {
      if (world.isRemote)
          {
            return true;
          }
          else
          {
      player.openGui(AurelienMod.instance, 0, world, x, y, z);
         return true;
          }
      }
      
      private final Random field_149955_b = new Random();
      
      @Override
         public void breakBlock(World worldObj, int x, int y, int z, Block p_149749_5_, int p_149749_6_)
      {
      worldObj.playAuxSFX(1005,  x , y , z, 0);
      worldObj.playRecord((String)null,  x , y, z);
      
      TileEntityMusicBlock TileEntity = (TileEntityMusicBlock) worldObj.getTileEntity(x, y, z);
      
             if ( TileEntity != null)
             {
                 for (int var8 = 0; var8 <  TileEntity.getSizeInventory(); ++var8)
                 {
                     ItemStack var9 =  TileEntity.getStackInSlot(var8);
      
                     if (var9 != null)
                     {
                         float var10 = this.field_149955_b.nextFloat() * 0.8F + 0.1F;
                         float var11 = this.field_149955_b.nextFloat() * 0.8F + 0.1F;
                         EntityItem var14;
      
                         for (float var12 = this.field_149955_b.nextFloat() * 0.8F + 0.1F; var9.stackSize > 0; worldObj.spawnEntityInWorld(var14))
                         {
                             int var13 = this.field_149955_b.nextInt(21) + 10;
      
                             if (var13 > var9.stackSize)
                             {
                                 var13 = var9.stackSize;
                             }
      
                             var9.stackSize -= var13;
                             var14 = new EntityItem(worldObj, (double)((float)x + var10), (double)((float)y + var11), (double)((float)z + var12), new ItemStack(var9.getItem(), var13, var9.getItemDamage()));
                             float var15 = 0.05F;
                             var14.motionX = (double)((float)this.field_149955_b.nextGaussian() * var15);
                             var14.motionY = (double)((float)this.field_149955_b.nextGaussian() * var15 + 0.2F);
                             var14.motionZ = (double)((float)this.field_149955_b.nextGaussian() * var15);
      
                             if (var9.hasTagCompound())
                             {
                                 var14.getEntityItem().setTagCompound((NBTTagCompound)var9.getTagCompound().copy());
                             }
                         }
                     }
                 }
      
                 worldObj.func_147453_f(x, y, z, p_149749_5_);
             }
      }
      
      @Override
      public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
      return new TileEntityMusicBlock();
      }
      
      }
      

      ContainerMusicBlock.java

      package re.aurelien.mod.MusicBlock;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.entity.player.InventoryPlayer;
      import net.minecraft.inventory.Container;
      import net.minecraft.inventory.Slot;
      import net.minecraft.item.ItemRecord;
      import net.minecraft.item.ItemStack;
      
      public class ContainerMusicBlock extends Container {
      
      private final TileEntityMusicBlock Tile;
      public ContainerMusicBlock (TileEntityMusicBlock tile, InventoryPlayer inventory) {
      this.Tile =  tile;
      
      for (int i=1; i <9; ++i)
              {
         this.addSlotToContainer(new Slot(tile, i - 1, (19 * i) - 6, 15){
      @Override
      public boolean isItemValid(ItemStack Stack)
      {
         if(Stack.getItem() instanceof ItemRecord)
      {
        return true;
      }
      else
      {
        return false;
      }
      }
      });
          }
      
      //this.addSlotToContainer(new Slot(tile, 8, 80, 35)
      //{
      // @Override
      // public boolean isItemValid(ItemStack Stack)
      // {
      // return false;
      //}
      //});
      
      this.bindPlayerInventory(inventory);
      }
      
      private void bindPlayerInventory(InventoryPlayer inventory)
         {
             int i;
             for(i = 0; i < 3; ++i)
             {
                 for(int j = 0; j < 9; ++j)
                 {
                     this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
                 }
             }
      
             for(i = 0; i < 9; ++i)
             {
                 this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 142));
             }
         }
      
      public boolean canInteractWith(EntityPlayer player) {
      
      return this.Tile.isUseableByPlayer(player);
      }
      
      public ItemStack transferStackInSlot(EntityPlayer Player, int slotIndex)
      {
         ItemStack var3 = null;
             Slot var4 = (Slot)this.inventorySlots.get(slotIndex);
      
             if (var4 != null && var4.getHasStack())
             {
                 ItemStack var5 = var4.getStack();
      
                 if (var5.getItem() instanceof ItemRecord)
             {
                   var3 = var5.copy();
             }
                 else
                 {
                  return null;
                 }
      
                 if (slotIndex < 8)
                 {
                     if (!this.mergeItemStack(var5, 8, this.inventorySlots.size(), true))
                     {
                         return null;
                     }
                 }
                 else if (!this.mergeItemStack(var5, 0, 8, false))
                 {
                     return null;
                 }
      
                 if (var5.stackSize == 0)
                 {
                     var4.putStack((ItemStack)null);
                 }
                 else
                 {
                     var4.onSlotChanged();
                 }
      
             }
      
             return var3;
          }
      }
      ```</string,></string,>
      1 réponse Dernière réponse Répondre Citer 0
      • DeletedD Hors-ligne
        Deleted
        dernière édition par

        Tu pourrais mettre les balises java pour faciliter l’aperçu du code ?
        De + si tu respectais la convention, ça serait aussi + apréciable niveau lecture.
        Et quand souhaites-tu vérifier que le son est joué, dans ta TE ? Je te rappelle que les musiques ne sont gérées que côté server, du coup tu n’as pas à t’embêter au niveau de ton serveur, c’est le client qui s’en occupera 😉

        1 réponse Dernière réponse Répondre Citer 0
        • aurelien974A Hors-ligne
          aurelien974
          dernière édition par

          Reuh Salut,
          (De + si tu respectais la convention, ça serait aussi + apréciable niveau lecture.) Désolé je suis pas un vrais programmeur je bricole comme je peux x’)

          Alors j’ai trouvé mais le problème c’est que je me demander si le fait de refresh se petit boue code la

          
          @SideOnly(Side.CLIENT)
          @SubscribeEvent
          public void PlaySoundSource(PlaySoundSourceEvent event)
          {
          SoundManager manager = null;
          try
          {
          // handler -> manager -> playingList
          
          // gets SoundHandler
          net.minecraft.client.audio.SoundHandler handler;
          Field field_handler = Minecraft.class.getDeclaredField("mcSoundHandler");
          field_handler.setAccessible(true);
          handler = (net.minecraft.client.audio.SoundHandler) field_handler.get(Minecraft.getMinecraft());
          
          // gets SoundManager
          Field field_manager = net.minecraft.client.audio.SoundHandler.class.getDeclaredField("sndManager");
          field_manager.setAccessible(true);
          manager = (SoundManager) field_manager.get(handler);
          
          // gets playing list
          Field field_playing = SoundManager.class.getDeclaredField("playingSounds");
          field_playing.setAccessible(true);
          AurelienMod.playing = (HashBiMap<string, isound="">) field_playing.get(manager);
          
          }
          catch (Exception ex)
          {
          ex.printStackTrace();
          }
          }
          
          

          Pause pas problème de performance ??

          Au début je les ajouter dans une fonction qui load les sound du cout coté client ça fonctionner mais pas coté server !

          C’était suis la

          
          @SideOnly(Side.CLIENT)
          @SubscribeEvent
          public void onSoundsLoaded(SoundLoadEvent event)
          {
          
          ```</string,>
          1 réponse Dernière réponse Répondre Citer 0
          • aurelien974A Hors-ligne
            aurelien974
            dernière édition par

            En solo tout fonction bien, juste que sur le server je peux pas utilisé ( import net.minecraft.client.audio.SoundManager; )

            Du coup la fonction

            
            private boolean isSoundPlaying(ResourceLocation res)
            {
            if (AurelienMod.playing != null)
            {
            ISound[] array_playing = AurelienMod.playing.values().toArray(new ISound[AurelienMod.playing.values().size()]);
            for (int i = 0; i < array_playing.length; i++)
            {
            if (array_playing*.getPositionedSoundLocation().equals(res))
            {
            return true;
            }
            }
            }
            return false;
            }
            
            

            Du coup il return false coté server parce que la variable (AurelienMod.playing) est null

            parce que le server utilise pas de SoundManager. c’est que coté client.

            1 réponse Dernière réponse Répondre Citer 0
            • DeletedD Hors-ligne
              Deleted
              dernière édition par

              ~~Si les TE ne sont pas des 2 côtés alors packet obligatoire ~~
              Les TE sont gérés des 2 côtés donc suis le message de robin au-dessus

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                Oui et c’est normal, le son n’est que géré côté client. Il n’a aucun intérêt côté serveur. Tout ce qui concerne le son ne doit que être fait sur le client.

                1 réponse Dernière réponse Répondre Citer 0
                • aurelien974A Hors-ligne
                  aurelien974
                  dernière édition par

                  Du coup je vais essayer nettoyer mon code, est aller après tester les Packet ^^ je vous tient au courant.

                  1 réponse Dernière réponse Répondre Citer 0
                  • DeletedD Hors-ligne
                    Deleted
                    dernière édition par

                    Nan regarde mon message (je l’ai édité). Pas besoin de packet, rajoute juste une condition de ce genre
                    if(this.worldObj.isRemote)
                    {
                    //Ta méthode qui check si un disque est joué
                    }

                    1 réponse Dernière réponse Répondre Citer 0
                    • aurelien974A Hors-ligne
                      aurelien974
                      dernière édition par

                      je peux pas le mettre dans isSoundPlaying parce que coté server il va return false quand même ^^ du coup il va coupé la musique est remettre un autre en boucle sans que la musique soie fini ^^

                      Est quand tu parler de TE sa va dit ?

                      (Les TE sont gérés des 2 côtés)

                      En plus par IMessage je peux pas le faire non plus,

                      Le updateTick  fonctionne que sur server est pas sur client 😕

                      1 réponse Dernière réponse Répondre Citer 0
                      • DeletedD Hors-ligne
                        Deleted
                        dernière édition par

                        Les TileEntity sont des 2 côtés : client et serveur. Du coup tu peux très bien vérifier dans la méthode updateEntity de ta TE si une musique est jouée. Et comme on te le dit depuis plusieurs messages, occupe toi que du client ^^ Le serveur n’en a rien à faire de ta musique. Du coup rajoute cette condition :
                        if(this.worldObj.isRemote)

                        1 réponse Dernière réponse Répondre Citer 0
                        • aurelien974A Hors-ligne
                          aurelien974
                          dernière édition par

                          J’ai déjà teste ^^ le problème c’est que quand le mod est sur le server le client utilise pas la fonction updateTick, il y a que le serveur. j’ai teste avec un System.out.println est il y à que le server qui l’affiche dans le console le client non 😕

                          1 réponse Dernière réponse Répondre Citer 0
                          • DeletedD Hors-ligne
                            Deleted
                            dernière édition par

                            Est-ce que t’as essayé mon code au moins avant de dire qu’il ne marche pas ? Si c’est le cas, alors packet obligatoire !

                            1 réponse Dernière réponse Répondre Citer 0
                            • aurelien974A Hors-ligne
                              aurelien974
                              dernière édition par

                              Juste un problème c’est que le updateTick marche pas sur le client quand j’ajoute le mod sur un server forge.
                              Il y à que le server qui updateTick le block

                              Je comprend pas 😕

                              
                              @Override
                              public void updateTick(World world, int x, int y, int z, Random rand)
                              {
                              if (world.isRemote == true)
                              {
                              System.out.println("Client updateTick"); // Quand le mod est sur le server ça marche pas !
                              }
                              else
                              {
                              System.out.println("Server updateTick");
                              }
                              
                              world.markBlockForUpdate(x, y, z);
                              }
                              
                              
                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002R Hors-ligne
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                dernière édition par

                                C’est tout à fait normal. Sur serveur il y a que les fonctions serveurs qui sont exécutés et world.isRemote est toujours faux.
                                Sur ton client c’est l’inverse.
                                Et lorsque tu joues en solo tu as les deux, car il y a un serveur intégré qui tourne.

                                1 réponse Dernière réponse Répondre Citer 0
                                • aurelien974A Hors-ligne
                                  aurelien974
                                  dernière édition par

                                  J’ai trouvé un moyen plus simple, j’ai créer 2 classe pour géré la duré des musique, faut juste l’ajoute dans un fichier json mais du coup ça fonction des 2 coté est j’ai plus besoin de SoundManager. j’ai juste encore quelque problème avec les ticks. parce que le sound s’arrête 3 seconde en avance ^^

                                  Je passerai le code.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • 1 / 1
                                  • Premier message
                                    Dernier message
                                  Design by Woryk
                                  ContactMentions Légales

                                  MINECRAFT FORGE FRANCE © 2024

                                  Powered by NodeBB