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

    LivingUpdateEvent + Particules + NBT

    Sans suite
    1.8
    3
    13
    3972
    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.
    • K
      Kushhh last edited by

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

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

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

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

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

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

                @‘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 Reply Last reply Reply Quote 0
                • K
                  Kushhh last edited by

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

                    @‘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 Reply Last reply Reply Quote 0
                    • K
                      Kushhh last edited by

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

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

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

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

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

                              @‘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 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