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

    LivingUpdateEvent + Particules + NBT

    Sans suite
    1.8
    3
    13
    4038
    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.
    • K
      Kushhh dernière édition par

      Salut salut!

      ça faisait bien longtemps que j’avais pas remis les pieds sur ce forum haha!

      bon j’ai un léger soucis, quand je veux faire spawner un particule, j’utilise l’Event “LivingUpdateEvent”, mais visiblement sa fonctionne que quelquefois 😞
      si quelqu’un, aurais la solution a ce problème sa m’aiderais, sachant que je récupère le nom de la particules dans un “NBTTagCompound”, et que je convertis le nom de cette particule en “EnumParticleType”, peut être que je m’y prend mal…

      CustomEventHandler.java

      package com.xkzh.rntwk;
      
      import java.util.Random;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.nbt.NBTBase;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.util.ChatComponentText;
      import net.minecraft.util.EnumParticleTypes;
      import net.minecraftforge.event.entity.EntityJoinWorldEvent;
      import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
      import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
      import net.minecraftforge.fml.common.gameevent.InputEvent.KeyInputEvent;
      import net.minecraftforge.fml.relauncher.Side;
      import net.minecraftforge.fml.relauncher.SideOnly;
      
      import com.xkzh.rntwk.gui.GuiAuras;
      import com.xkzh.rntwk.gui.GuiLevelUp;
      
      import fr.minecraftforgefrance.ffmtlibs.FFMTLibs;
      
      public class CustomEventHandler
      {
      
      /* @SideOnly(Side.CLIENT)
      @SubscribeEvent
      public void replaceguimenu(GuiOpenEvent guievt)
      {
      
      if(guievt.gui != null && guievt.gui instanceof GuiIngame)
      {
      Minecraft.getMinecraft().displayGuiScreen(new GuiCustomMainMenu());
      //System.out.println("test");
      guievt.setCanceled(true);
      
      }
      }
      */
      @SideOnly(Side.CLIENT)
      @SubscribeEvent
      public void onEvent(KeyInputEvent event)
      {
      if(ClientSidedProxy.keyAura.isPressed())
      {
      EntityPlayer player = Minecraft.getMinecraft().thePlayer;
      player.openGui(Main.Instance, GuiAuras.GuiID, Minecraft.getMinecraft().theWorld, (int)player.posX, (int)player.posY, (int)player.posZ);
      }
      if(ClientSidedProxy.keyStats.isPressed())
      {
      EntityPlayer player = Minecraft.getMinecraft().thePlayer;
      player.openGui(Main.Instance, GuiLevelUp.GuiID, Minecraft.getMinecraft().theWorld, (int)player.posX, (int)player.posY, (int)player.posZ);
      }
      }
      @SideOnly(Side.SERVER)
      @SubscribeEvent
      public void onPlayerUpdate(LivingUpdateEvent event)
      {
      if(event.entityLiving instanceof EntityPlayer)
      {
      EntityPlayer player = (EntityPlayer)event.entityLiving;
      Random rand = new Random();
      
      NBTTagCompound nbt = player.getEntityData();
      String nbt2 = nbt.getTag("Aura").toString().replace("\"", "");
      System.out.println("Aura : " + nbt2);
      player.worldObj.spawnParticle(EnumParticlesToString.getParticle(nbt2) , player.posX + (rand.nextDouble() - 0.5D) * (double) (player.width - 0.1D),player.posY + rand.nextDouble() * (double) (player.height - 0.1D),player.posZ + (rand.nextDouble() - 0.5D)* (double) (player.width - 0.1D), 0.0D, 0.0D, 0.0D);
      }
      }
      @SideOnly(Side.SERVER)
      @SubscribeEvent
      public void onJoinWorld(EntityJoinWorldEvent event)
      {
      if(event.entity instanceof EntityPlayer)
      {
      EntityPlayer player = (EntityPlayer) event.entity;
      NBTTagCompound nbt = player.getEntityData();
      if(!nbt.hasKey("Aura"))
      {
      nbt.setString("Aura", "null");
      }
      }
      }
      }
      
      

      EnumParticlesToString.java (faut que je change le nom de ce truc btw)

      package com.xkzh.rntwk;
      
      import java.lang.reflect.Array;
      
      import scala.actors.threadpool.Arrays;
      import net.minecraft.util.EnumParticleTypes;
      
      public class EnumParticlesToString
      {
      public static EnumParticleTypes getParticle(String part)
      {
      if(part.equalsIgnoreCase("redstone"))
      return EnumParticleTypes.REDSTONE;
      if(part.equalsIgnoreCase("coeurs"))
      return EnumParticleTypes.HEART;
      if(part.equalsIgnoreCase("notes"))
      return EnumParticleTypes.NOTE;
      if(part.equalsIgnoreCase("null"))
      return EnumParticleTypes.BLOCK_DUST;
      else
      return null;
      }
      }
      
      

      je pense que c’est a peu pres tout !
      Merci 🙂

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

        Je ne comprends pas l’utilité du .replace(“”", “”) et pour le NBT, pourquoi ne pas utiliser nbt.getString(“Aura”) ?

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

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

          C’est vrai que c’est un peu stupide xD

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

            Je pense que le problème vient du random, essaie avec des coordonnées fixe comme player.posX player.posY et player.posZ pour voir.

            Site web contenant mes scripts : http://SCAREXgaming.github.io

            Pas de demandes de support par MP ni par skype SVP.
            Je n'accepte sur skype que l…

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

              visiblement sa ne viens pas du random, alors il semblerais que ceci fonctionne

              @SubscribeEvent
              public void onPlayerUpdate(LivingUpdateEvent event)
              {
              if(event.entityLiving instanceof EntityPlayer)
              {
              EntityPlayer player = (EntityPlayer)event.entityLiving;
              Random rand = new Random();
              player.worldObj.spawnParticle(EnumParticleTypes.HEART , player.posX + (rand.nextDouble() - 0.5D) * (double) (player.width - 0.1D),player.posY + rand.nextDouble() * (double) (player.height - 0.1D),player.posZ + (rand.nextDouble() - 0.5D)* (double) (player.width - 0.1D), 0.0D, 0.0D, 0.0D);
              }
              }
              

              il faut que j’enleve le SideOnly, et cette fonction EnumParticlesToString.getParticle(nbt2) (qui ne fonctionne pas a mon plus grand desepoir…

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

                @‘Kushhh’:

                visiblement sa ne viens pas du random, alors il semblerais que ceci fonctionne

                @SubscribeEvent
                public void onPlayerUpdate(LivingUpdateEvent event)
                {
                if(event.entityLiving instanceof EntityPlayer)
                {
                EntityPlayer player = (EntityPlayer)event.entityLiving;
                Random rand = new Random();
                player.worldObj.spawnParticle(EnumParticleTypes.HEART , player.posX + (rand.nextDouble() - 0.5D) * (double) (player.width - 0.1D),player.posY + rand.nextDouble() * (double) (player.height - 0.1D),player.posZ + (rand.nextDouble() - 0.5D)* (double) (player.width - 0.1D), 0.0D, 0.0D, 0.0D);
                }
                }
                

                il faut que j’enleve le SideOnly, et cette fonction EnumParticlesToString.getParticle(nbt2) (qui ne fonctionne pas a mon plus grand desepoir…

                Effectivement, je n’y avait pas pensé mais je pense que le livingUpdateEvent se fait uniquement côté serveur, si tu veux générer des particules, il te faudra un autre event. pour ta fonction getParticle(String) le problème vient de comment tu le récupère, fait un System.out.println(nbt2) pour voir ce qui est mis dans ta variable.

                Site web contenant mes scripts : http://SCAREXgaming.github.io

                Pas de demandes de support par MP ni par skype SVP.
                Je n'accepte sur skype que l…

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

                  [size=smallSystem.out.println(nbt2) -> j’ai deja fait sa il me retourne ce que je veux mais apres la convertion texte vers Particule se fait pas]:([size=xx-small ]

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

                    @‘Kushhh’:

                    [size=smallSystem.out.println(nbt2) -> j’ai deja fait sa il me retourne ce que je veux mais apres la convertion texte vers Particule se fait pas]:([size=xx-small ]

                    Essaie avec une particules déjà implémenter dans le jeux.

                    Site web contenant mes scripts : http://SCAREXgaming.github.io

                    Pas de demandes de support par MP ni par skype SVP.
                    Je n'accepte sur skype que l…

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

                      les particules que je teste sont déja implémentées dans le jeu 😞

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

                        @‘Kushhh’:

                        les particules que je teste sont déja implémentées dans le jeu 😞

                        Essaie avec quelque chose comme ça :

                        
                        for (int l = 0; l < 100; l++) {
                        world.spawnParticle(EnumParticleTypes.SNOWBALL, 112.5D, 77.5D, 11.5D, 0.0D, 0.0D, 0.0D, new int[0]);
                        }
                        
                        

                        change les 3 premiers double avec tes coordonnées et dis moi si ça fonctionne. (en t’assurant bien d’avoir les particules d’affichées)

                        Site web contenant mes scripts : http://SCAREXgaming.github.io

                        Pas de demandes de support par MP ni par skype SVP.
                        Je n'accepte sur skype que l…

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

                          C est toujours le même souci de side sa rejoint mon post la 
                          http://www.minecraftforgefrance.fr/showthread.php?tid=887

                          Il faut que tu passes par des packets ou alors que tu trouves un event qui irait ou même un méthode

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

                            @‘Julot10085’:

                            C est toujours le même souci de side sa rejoint mon post la 
                            http://www.minecraftforgefrance.fr/showthread.php?tid=887

                            Il faut que tu passes par des packets ou alors que tu trouves un event qui irait ou même un méthode

                            Non puisque ça méthode ne se fait pas lorsqu’il y a un événement côté serveur, son problème est qu’il utilise un event serveur au lieu d’un event côté client.

                            Site web contenant mes scripts : http://SCAREXgaming.github.io

                            Pas de demandes de support par MP ni par skype SVP.
                            Je n'accepte sur skype que l…

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

                              @‘SCAREX’:

                              @‘Julot10085’:

                              C est toujours le même souci de side sa rejoint mon post la 
                              http://www.minecraftforgefrance.fr/showthread.php?tid=887

                              Il faut que tu passes par des packets ou alors que tu trouves un event qui irait ou même un méthode

                              Non puisque ça méthode ne se fait pas lorsqu’il y a un événement côté serveur, son problème est qu’il utilise un event serveur au lieu d’un event côté client.

                              C’est bien ce que je dis il faut qu’il passe par un autre event ou une méthode appellée côté client puisque spawnParticle est une méthode côté client. Ou alors si tu souhaites quand même te servir de cet event (LivingUpdate) alors crée un packet pour les particules et envoies-le ici

                              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