• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

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

    Sans suite
    3
    19
    2331
    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.
    • aurelien974
      aurelien974 dernière édition par

      Salut, Je voudrais savoir comment je pourrai faire pour récupérer une information du genre si un ItemRecord est en cour de lecture.

      J’utilise ça pour lancer la musique

      
             public boolean SoundPlaye = false;
      @Override
      public void updateEntity()
      {
      if(contents[0] != null && !SoundPlaye == true)
      {
      System.out.println("Play Music !");
      Item x = contents[0].getItem();
      this.worldObj.playAuxSFXAtEntity((EntityPlayer)null, 1005, this.xCoord, this.yCoord, this.zCoord, Item.getIdFromItem(x));
      SoundPlaye = true;
      }
      }
      
      

      Merci de votre aide 🙂

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

        Tu as sûrement un event SoundRecordPlayed event ou un truc du genre. Au pire tu prends un de ces event et tu check le nom du son joué.

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

          Gras à toi je suis parti chercher avec mot clé (SoundRecordPlayed) je suis tomber sur ça

          https://dl.dropboxusercontent.com/s/h777x7ugherqs0w/forgeevents.html
          après ça
          http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/modification-development/2142490-how-to-test-if-a-sound-is-being-played
          Et ça !
          http://pastebin.com/jC7dyMxr

          Je donne pour les gens qui cherche aussi comment faire !

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

            Hé bien ? À partir de là, c’est bon tu as juste à faire une condition avec le boolean et fais attention au nom du cd !

            1 réponse Dernière réponse Répondre Citer 0
            • aurelien974
              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
              • Deleted
                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
                • aurelien974
                  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
                  • aurelien974
                    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
                    • Deleted
                      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
                      • robin4002
                        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
                        • aurelien974
                          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
                          • Deleted
                            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
                            • aurelien974
                              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
                              • Deleted
                                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
                                • aurelien974
                                  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
                                  • Deleted
                                    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
                                    • aurelien974
                                      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
                                      • robin4002
                                        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
                                        • aurelien974
                                          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
                                          Contact / Mentions Légales

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB