• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

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

    Sans suite
    3
    19
    2295
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • aurelien974
      aurelien974 last edited by

      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 Reply Last reply Reply Quote 0
      • Deleted
        Deleted last edited by

        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 Reply Last reply Reply Quote 0
        • aurelien974
          aurelien974 last edited by

          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 Reply Last reply Reply Quote 0
          • Deleted
            Deleted last edited by

            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 Reply Last reply Reply Quote 0
            • aurelien974
              aurelien974 last edited by

              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 Reply Last reply Reply Quote 0
              • Deleted
                Deleted last edited by

                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 Reply Last reply Reply Quote 0
                • aurelien974
                  aurelien974 last edited by

                  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 Reply Last reply Reply Quote 0
                  • aurelien974
                    aurelien974 last edited by

                    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 Reply Last reply Reply Quote 0
                    • Deleted
                      Deleted last edited by

                      ~~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 Reply Last reply Reply Quote 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                        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 Reply Last reply Reply Quote 0
                        • aurelien974
                          aurelien974 last edited by

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

                          1 Reply Last reply Reply Quote 0
                          • Deleted
                            Deleted last edited by

                            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 Reply Last reply Reply Quote 0
                            • aurelien974
                              aurelien974 last edited by

                              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 Reply Last reply Reply Quote 0
                              • Deleted
                                Deleted last edited by

                                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 Reply Last reply Reply Quote 0
                                • aurelien974
                                  aurelien974 last edited by

                                  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 Reply Last reply Reply Quote 0
                                  • Deleted
                                    Deleted last edited by

                                    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 Reply Last reply Reply Quote 0
                                    • aurelien974
                                      aurelien974 last edited by

                                      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 Reply Last reply Reply Quote 0
                                      • robin4002
                                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                                        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 Reply Last reply Reply Quote 0
                                        • aurelien974
                                          aurelien974 last edited by

                                          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 Reply Last reply Reply Quote 0
                                          • 1 / 1
                                          • First post
                                            Last post
                                          Design by Woryk
                                          Contact / Mentions Légales

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB