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

    Solved "Arc" avec effet.

    1.7.x
    1.7.2
    5
    41
    8986
    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.
    • Flow
      Flow last edited by robin4002

      Bonjour pour mon mod je crée une Sarbacane et des fléchettes tranquillisantes , j’ai créer un item Sarbacane et dans sa classe j’ai mis ceci :

      package mod.common;
      
      import net.minecraft.client.renderer.texture.IIconRegister;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemBow;
      
      public class SarbacaneItem extends ItemBow
      {
          @Override
          public void registerIcons(IIconRegister iconregister)
          {
              this.itemIcon = iconregister.registerIcon(ModMinecraft.MODID + ":itemSarbacane");
          }
      }
      

      J’ai juste mis l’extends avec ItemBow donc la Sarbacane zoom très bien les textures sont bonnes , mais elles tires des flèches mais j’aimerais qu’elles tirent mes fléchettes tranquillisante mais en plus j’aimerais que la ciblée touchée par la félchette ait un effet dit Slowness mais que le mob ne puisse plus du tout bouger pendant 1:07.

      Je ne trouve rien pour faire sa bien évidemment et je ne suis pas un expert du modding ! 😕

      Merci à ceux qui m’aideront.

      Oui ce gif est drôle.

      1 Reply Last reply Reply Quote 0
      • T
        totos51 last edited by

        Le problème vient de ton extends, tu reprends toutes les caractéristiques d’ItemBow or cette classe a une fonction qui consomme une flèche si tu tires avec. Il faudrait que tu recopies cette fonction dans ta classe en modifiant pour qu’elle utilise des flechettes.
        Ensuite pour l’effet slowness, il suffit d’ajouter un effet de potion à l’entité touché.

        1 Reply Last reply Reply Quote 0
        • Überfap
          Überfap last edited by

          C’est simple, tu fais une nouvelle entité qui hérite de EntityThrowable, tu fais son rendu, tu copies colle le code de l’arc, tu changes l’entité tirée par ton entité, et voila ! ( Si tu ne vois absolument pas comment faire, attends, je vais me doucher et puis je te passe le code 😉 )


          Par contre tu es en quelle version ?

          Si je t'ai aidé, n'hésites pas à mettre un point de réputation positif !
          Si tu m'as aidé, je n'hésiterais pas à t'en donner à mon tour !

          1 Reply Last reply Reply Quote 1
          • Flow
            Flow last edited by

            Je vois se que vous voulez dire , le problème est que dans mon logiciel eclipse je ne trouve pas les classes principale de minecraft ou-sont elles ?

            EDIT : Je suis en 1.7.2

            Oui ce gif est drôle.

            1 Reply Last reply Reply Quote 0
            • Überfap
              Überfap last edited by

              Dans Referenced Libraries –> forgeSrcXXX.XXX.XXX 😉

              Si je t'ai aidé, n'hésites pas à mettre un point de réputation positif !
              Si tu m'as aidé, je n'hésiterais pas à t'en donner à mon tour !

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

                Ouf merci , je vais essayer , pour au moins essayer de faire quelques chose si je n’y arrive pas je re-posterais un messages 😉 Histoire de ne pas vous demander de tout faire.

                EDIT : On voit que je suis en apprentissage ^^ En effet je ne sais pas par quoi commencer , je pense qu’ensuite je dois placer ce code : µ

                if (flag || par3EntityPlayer.inventory.hasItem(Items.arrow))
                {
                float f = (float)j / 20.0F;
                f = (f * f + f * 2.0F) / 3.0F;
                
                if ((double)f < 0.1D)
                {
                return;
                }
                
                if (f > 1.0F)
                {
                f = 1.0F;
                }
                
                EntityArrow entityarrow = new EntityArrow(par2World, par3EntityPlayer, f * 2.0F);
                
                if (f == 1.0F)
                {
                entityarrow.setIsCritical(true);
                }
                
                int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, par1ItemStack);
                
                if (k > 0)
                {
                entityarrow.setDamage(entityarrow.getDamage() + (double)k * 0.5D + 0.5D);
                }
                
                int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, par1ItemStack);
                
                if (l > 0)
                {
                entityarrow.setKnockbackStrength(l);
                }
                
                if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, par1ItemStack) > 0)
                {
                entityarrow.setFire(100);
                }
                
                par1ItemStack.damageItem(1, par3EntityPlayer);
                par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
                
                if (flag)
                {
                entityarrow.canBePickedUp = 2;
                }
                else
                {
                par3EntityPlayer.inventory.consumeInventoryItem(Items.arrow);
                }
                
                if (!par2World.isRemote)
                {
                par2World.spawnEntityInWorld(entityarrow);
                }
                }
                }
                

                en remplaçant mais j’ai plein d’erreur etc…

                Oui ce gif est drôle.

                1 Reply Last reply Reply Quote 0
                • Überfap
                  Überfap last edited by

                  Copies colle tout le code de l’arc et puis change ce qu’il y a dans cette méthode 😉

                  Si je t'ai aidé, n'hésites pas à mettre un point de réputation positif !
                  Si tu m'as aidé, je n'hésiterais pas à t'en donner à mon tour !

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

                    Je n’arrive juste pas a trouver la facon de pouvoir déclare mon item j’ai mis if (flag || par3EntityPlayer.inventory.hasItem(Item.itemFlechette)) cependant Item.itemFlechette n’est pas reconnu j’ai aussi essayé Items.itemFlechette mais rien n’y fais non plus ,j’ai importé tout ce que je pensais juste. ```
                    import cpw.mods.fml.relauncher.Side;
                    import cpw.mods.fml.relauncher.SideOnly;
                    import net.minecraft.client.renderer.texture.IIconRegister;
                    import net.minecraft.creativetab.CreativeTabs;
                    import net.minecraft.enchantment.Enchantment;
                    import net.minecraft.enchantment.EnchantmentHelper;
                    import net.minecraft.entity.player.EntityPlayer;
                    import net.minecraft.entity.projectile.EntityArrow;
                    import net.minecraft.init.Items;
                    import net.minecraft.item.EnumAction;
                    import net.minecraft.init.Items;
                    import net.minecraft.item.Item;
                    import net.minecraft.item.ItemStack;
                    import net.minecraft.util.IIcon;
                    import net.minecraft.world.World;
                    import net.minecraftforge.common.MinecraftForge;
                    import net.minecraftforge.event.entity.player.ArrowLooseEvent;
                    import net.minecraftforge.event.entity.player.ArrowNockEvent;
                    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.registry.GameRegistry;

                    
                    mais rien n'y fais.. :(

                    Oui ce gif est drôle.

                    1 Reply Last reply Reply Quote 0
                    • robin4002
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                      <taclasseprincipale>.itemFlechette
                      La, il serait temps d’apprendre le langage Java sinon tu vas rester bloqués sur des trucs cons encore longtemps.</taclasseprincipale>

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

                        Je suis débutant et pourtant je sais pas pourquoi j’y ai pas pensé , désoler :S
                        Cependant même en replaçant par le itemFlechette ce sont toujours des flèches qui sont tirer , ou dois-je changer quelque chose ?

                        package mod.common;
                        
                        import cpw.mods.fml.relauncher.Side;
                        import cpw.mods.fml.relauncher.SideOnly;
                        import net.minecraft.client.renderer.texture.IIconRegister;
                        import net.minecraft.creativetab.CreativeTabs;
                        import net.minecraft.enchantment.Enchantment;
                        import net.minecraft.enchantment.EnchantmentHelper;
                        import net.minecraft.entity.player.EntityPlayer;
                        import net.minecraft.entity.projectile.EntityArrow;
                        import net.minecraft.init.Items;
                        import net.minecraft.item.EnumAction;
                        import net.minecraft.init.Items;
                        import net.minecraft.item.Item;
                        import net.minecraft.item.ItemStack;
                        import net.minecraft.util.IIcon;
                        import net.minecraft.world.World;
                        import net.minecraftforge.common.MinecraftForge;
                        import net.minecraftforge.event.entity.player.ArrowLooseEvent;
                        import net.minecraftforge.event.entity.player.ArrowNockEvent;
                        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.registry.GameRegistry;
                        
                        public class SarbacaneItem extends Item
                        {
                        
                        public static final String[] bowPullIconNameArray = new String[] {"pulling_0", "pulling_1", "pulling_2"};
                        @SideOnly(Side.CLIENT)
                        private IIcon[] iconArray;
                        private static final String __OBFID = "CL_00001777";
                        
                        public SarbacaneItem()
                        {
                        this.maxStackSize = 1;
                        this.setMaxDamage(0);
                        this.setCreativeTab(CreativeTabs.tabCombat);
                        }
                        
                        /**
                        * called when the player releases the use item button. Args: itemstack, world, entityplayer, itemInUseCount
                        */
                        public void onPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, int par4)
                        {
                        int j = this.getMaxItemUseDuration(par1ItemStack) - par4;
                        
                        ArrowLooseEvent event = new ArrowLooseEvent(par3EntityPlayer, par1ItemStack, j);
                        MinecraftForge.EVENT_BUS.post(event);
                        if (event.isCanceled())
                        {
                        return;
                        }
                        j = event.charge;
                        
                        boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0;
                        
                        if (flag || par3EntityPlayer.inventory.hasItem(ModMinecraft.itemFlechette))
                        {
                        float f = (float)j / 20.0F;
                        f = (f * f + f * 2.0F) / 3.0F;
                        
                        if ((double)f < 0.1D)
                        {
                        return;
                        }
                        
                        if (f > 1.0F)
                        {
                        f = 1.0F;
                        }
                        
                        EntityArrow entityarrow = new EntityArrow(par2World, par3EntityPlayer, f * 2.0F);
                        
                        if (f == 1.0F)
                        {
                        entityarrow.setIsCritical(true);
                        }
                        
                        int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, par1ItemStack);
                        
                        if (k > 0)
                        {
                        entityarrow.setDamage(entityarrow.getDamage() + (double)k * 0.5D + 0.5D);
                        }
                        
                        int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, par1ItemStack);
                        
                        if (l > 0)
                        {
                        entityarrow.setKnockbackStrength(l);
                        }
                        
                        if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, par1ItemStack) > 0)
                        {
                        entityarrow.setFire(100);
                        }
                        
                        par1ItemStack.damageItem(1, par3EntityPlayer);
                        par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
                        
                        if (flag)
                        {
                        entityarrow.canBePickedUp = 2;
                        }
                        else
                        {
                        par3EntityPlayer.inventory.consumeInventoryItem(Items.arrow);
                        }
                        
                        if (!par2World.isRemote)
                        {
                        par2World.spawnEntityInWorld(entityarrow);
                        }
                        }
                        }
                        
                        public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
                        {
                        return par1ItemStack;
                        }
                        
                        /**
                        * How long it takes to use or consume an item
                        */
                        public int getMaxItemUseDuration(ItemStack par1ItemStack)
                        {
                        return 72000;
                        }
                        
                        /**
                        * returns the action that specifies what animation to play when the items is being used
                        */
                        public EnumAction getItemUseAction(ItemStack par1ItemStack)
                        {
                        return EnumAction.bow;
                        }
                        
                        /**
                        * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
                        */
                        public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
                        {
                        ArrowNockEvent event = new ArrowNockEvent(par3EntityPlayer, par1ItemStack);
                        MinecraftForge.EVENT_BUS.post(event);
                        if (event.isCanceled())
                        {
                        return event.result;
                        }
                        
                        if (par3EntityPlayer.capabilities.isCreativeMode || par3EntityPlayer.inventory.hasItem(Items.arrow))
                        {
                        par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack));
                        }
                        
                        return par1ItemStack;
                        }
                        
                        /**
                        * Return the enchantability factor of the item, most of the time is based on material.
                        */
                        public int getItemEnchantability()
                        {
                        return 1;
                        }
                        
                        @SideOnly(Side.CLIENT)
                        public void registerIcons(IIconRegister iconregister)
                        {
                        this.itemIcon = iconregister.registerIcon(ModMinecraft.MODID + ":itemSarbacane");
                        }
                        
                        /**
                        * used to cycle through icons based on their used duration, i.e. for the bow
                        */
                        @SideOnly(Side.CLIENT)
                        public IIcon getItemIconForUseDuration(int par1)
                        {
                        return this.iconArray[par1];
                        }
                        
                        }
                        

                        Oui ce gif est drôle.

                        1 Reply Last reply Reply Quote 0
                        • robin4002
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                          EntityArrow entityarrow = new EntityArrow(par2World, par3EntityPlayer, f * 2.0F);
                          Il faut que tu créé ton propre projectile, l’item n’est que quelque chose dans l’inventaire, le projectile lui est une entité.

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

                            Je dois donc créer une nouvelle entitée je peut donc en créer une nouvelle et recopier celui de Arrow ( pour l’instant ) et changer en EntityFlechette alors ?

                            Oui ce gif est drôle.

                            1 Reply Last reply Reply Quote 0
                            • isador
                              isador Moddeurs confirmés Modérateurs last edited by

                              oui .

                              1 Reply Last reply Reply Quote 0
                              • Überfap
                                Überfap last edited by

                                
                                import net.minecraft.entity.Entity;
                                import net.minecraft.entity.EntityLivingBase;
                                import net.minecraft.entity.projectile.EntityThrowable;
                                import net.minecraft.potion.Potion;
                                import net.minecraft.potion.PotionEffect;
                                import net.minecraft.util.MovingObjectPosition;
                                import net.minecraft.world.World;
                                
                                public class EntitySlowingArrow extends EntityThrowable
                                {
                                public EntitySlowingArrow(World world)
                                {
                                super(world);
                                }
                                
                                protected void onImpact(MovingObjectPosition mop)
                                {
                                Entity e = mop.entityHit;
                                if (e != null && e instanceof EntityLivingBase)
                                {
                                ((EntityLivingBase) e).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 20, 1200));
                                }
                                }
                                }
                                
                                

                                Voila le code de l’entité qui ralentit, à toi de faire le rendu 🙂

                                Si je t'ai aidé, n'hésites pas à mettre un point de réputation positif !
                                Si tu m'as aidé, je n'hésiterais pas à t'en donner à mon tour !

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

                                  J’ai ajoute le code que tu m’as donné et recopier celui de la classe Arrow mais j’ai un probleme avec ceci , je ne sais pas par quoi remplacer :

                                  if (this.shootingEntity == null)
                                  {
                                  damagesource = DamageSource.causeEntityFlechetteDamage(this, this);
                                  }
                                  else
                                  {
                                  damagesource = DamageSource.causeEntityFlechetteDamage(this, this.shootingEntity);
                                  }
                                  
                                  

                                  C’est le EntityFlechette qui pose problème…Je ne sais pas quoi y mettre, il y avais Arrow avant mais ca ne marche pas non plus…

                                  EDIT : l’effect slowness ne s’applique pas non plus , faut-il changer quelque chose genre nom de classe à remplacé ?

                                  Oui ce gif est drôle.

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

                                    J’ai régler le soucis du probleme en le supprimant car je n’en ai pas besoin puisque pour moi la sarbacane ne dois pas faire de dégats donc tout mars , les flechettes sont récupérer , sont décompter sont tirer , mais pas de rendu de la flechette /: A terre elle est invisible et l’effet slowness ne se fait pas non plus /:

                                    J’ai également un crash report quand mon item flechette touche un mob ! :

                                    –-- Minecraft Crash Report ----
                                    // Surprise! Haha. Well, this is awkward.
                                    
                                    Time: 12/07/14 21:14
                                    Description: Ticking entity
                                    
                                    java.lang.NullPointerException: Ticking entity
                                    at net.minecraft.entity.EntityLivingBase.attackEntityFrom(EntityLivingBase.java:849)
                                    at mod.common.EntityFlechette.onUpdate(EntityFlechette.java:328)
                                    at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2254)
                                    at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:697)
                                    at net.minecraft.world.World.updateEntity(World.java:2214)
                                    at net.minecraft.world.World.updateEntities(World.java:2064)
                                    at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:528)
                                    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:697)
                                    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:608)
                                    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
                                    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482)
                                    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:746)
                                    
                                    A detailed walkthrough of the error, its code path and all known details is as follows:
                                    ---------------------------------------------------------------------------------------
                                    
                                    -- Head --
                                    Stacktrace:
                                    at net.minecraft.entity.EntityLivingBase.attackEntityFrom(EntityLivingBase.java:849)
                                    at mod.common.EntityFlechette.onUpdate(EntityFlechette.java:328)
                                    at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2254)
                                    at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:697)
                                    at net.minecraft.world.World.updateEntity(World.java:2214)
                                    
                                    -- Entity being ticked --
                                    Details:
                                    Entity Type: null (mod.common.EntityFlechette)
                                    Entity ID: 164761
                                    Entity Name: unknown
                                    Entity's Exact location: -84,28, 5,13, 1185,46
                                    Entity's Block location: World: (-85,5,1185), Chunk: (at 11,0,1 in -6,74; contains blocks -96,0,1184 to -81,255,1199), Region: (-1,2; contains chunks -32,64 to -1,95, blocks -512,0,1024 to -1,255,1535)
                                    Entity's Momentum: -1,40, -0,44, 0,91
                                    Stacktrace:
                                    at net.minecraft.world.World.updateEntities(World.java:2064)
                                    at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:528)
                                    
                                    -- Affected level --
                                    Details:
                                    Level name: New World
                                    All players: 1 total; [EntityPlayerMP['Player265'/262, l='New World', x=-82,74, y=4,00, z=1184,36]]
                                    Chunk stats: ServerChunkCache: 625 Drop: 0
                                    Level seed: -8257700624682821893
                                    Level generator: ID 01 - flat, ver 0\. Features enabled: true
                                    Level generator options:
                                    Level spawn location: World: (-80,4,1152), Chunk: (at 0,0,0 in -5,72; contains blocks -80,0,1152 to -65,255,1167), Region: (-1,2; contains chunks -32,64 to -1,95, blocks -512,0,1024 to -1,255,1535)
                                    Level time: 7088 game time, 7088 day time
                                    Level dimension: 0
                                    Level storage version: 0x04ABD - Anvil
                                    Level weather: Rain time: 19201 (now: false), thunder time: 51165 (now: false)
                                    Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true
                                    Stacktrace:
                                    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:697)
                                    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:608)
                                    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
                                    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482)
                                    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:746)
                                    
                                    – System Details --
                                    Details:
                                    Minecraft Version: 1.7.2
                                    Operating System: Windows 8.1 (amd64) version 6.3
                                    Java Version: 1.8.0_05, Oracle Corporation
                                    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
                                    Memory: 810769952 bytes (773 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
                                    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
                                    AABB Pool Size: 5276 (295456 bytes; 0 MB) allocated, 4942 (276752 bytes; 0 MB) used
                                    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
                                    FML: MCP v9.03 FML v7.2.211.1121 Minecraft Forge 10.12.2.1121 4 mods loaded, 4 mods active
                                    mcp{9.03} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
                                    FML{7.2.211.1121} [Forge Mod Loader] (forgeSrc-1.7.2-10.12.2.1121.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
                                    Forge{10.12.2.1121} [Minecraft Forge] (forgeSrc-1.7.2-10.12.2.1121.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
                                    modminecraft{1.0} [Mod Minecraft] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
                                    Profiler Position: N/A (disabled)
                                    Vec3 Pool Size: 685 (38360 bytes; 0 MB) allocated, 556 (31136 bytes; 0 MB) used
                                    Player Count: 1 / 8; [EntityPlayerMP['Player265'/262, l='New World', x=-82,74, y=4,00, z=1184,36]]
                                    Type: Integrated Server (map_client.txt)
                                    Is Modded: Definitely; Client brand changed to 'fml,forge'
                                    

                                    Oui ce gif est drôle.

                                    1 Reply Last reply Reply Quote 0
                                    • Überfap
                                      Überfap last edited by

                                      Envoie toutes tes classes (principale + entité + rendu)

                                      Si je t'ai aidé, n'hésites pas à mettre un point de réputation positif !
                                      Si tu m'as aidé, je n'hésiterais pas à t'en donner à mon tour !

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

                                        Classe principale

                                        package mod.common;
                                        
                                        import net.minecraft.creativetab.CreativeTabs;
                                        import net.minecraft.init.Blocks;
                                        import net.minecraft.init.Items;
                                        import net.minecraft.item.Item;
                                        import net.minecraft.item.ItemStack;
                                        import mod.proxy.CommonProxy;
                                        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.registry.GameRegistry;
                                        
                                        @Mod(modid = "modminecraft", name = "Mod Minecraft", version ="1.0")
                                        
                                        public class ModMinecraft
                                        {
                                        public static Item itemFlechette;
                                        public static Item itemSarbacane;
                                        public static Item itemSeve;
                                        public static Item itemSevewithmosquito;
                                        
                                        @Instance("modminecraft")
                                        public static ModMinecraft instance;
                                        public static final String MODID = "modminecraft";
                                        
                                        @SidedProxy(clientSide = "mod.proxy.ClientProxy", serverSide = "mod.proxy.CommonProxy")
                                        public static CommonProxy proxy;
                                        
                                        @EventHandler
                                        public void preInit(FMLPreInitializationEvent event)
                                        {
                                        itemFlechette = new DinoItem().setUnlocalizedName("itemFlechette").setCreativeTab(CreativeTabs.tabCombat);
                                        itemSarbacane = new SarbacaneItem().setUnlocalizedName("itemSarbacane").setCreativeTab(CreativeTabs.tabCombat);
                                        itemSeve = new SeveItem().setUnlocalizedName("itemSeve").setCreativeTab(CreativeTabs.tabMaterials);
                                        itemSevewithmosquito = new ItemSevewithmosquito().setUnlocalizedName("itemSevewithmosquito").setCreativeTab(CreativeTabs.tabMaterials);
                                        
                                        GameRegistry.registerItem(itemFlechette, "item_Flechette");
                                        GameRegistry.registerItem(itemSarbacane, "item_Sarbacane");
                                        GameRegistry.registerItem(itemSeve, "item_Seve");
                                        GameRegistry.registerItem(itemSeve, "item_Sevewithmosquito");
                                        }
                                        
                                        @EventHandler
                                        public void init(FMLInitializationEvent event)
                                        {
                                        proxy.registerRender();
                                        
                                        GameRegistry.addRecipe(new ItemStack(itemFlechette, 4), new Object[]{"ZX ", "XYX", " XE", 'X', Items.stick,
                                        'Y', new ItemStack(Items.potionitem, 1, 16426), 'Z', Items.iron_ingot, 'E', new ItemStack(Blocks.wool, 1, 14)});
                                        
                                        GameRegistry.addRecipe(new ItemStack(itemSarbacane), new Object[]{"XZ ", "ZXZ", " ZX", 'X', Items.reeds, 'Z', Items.string});
                                        }
                                        
                                        @EventHandler
                                        public void postInit(FMLPostInitializationEvent event)
                                        {
                                        
                                        }
                                        }
                                        
                                        

                                        Entité

                                        package mod.common;
                                        
                                        import cpw.mods.fml.relauncher.Side;
                                        import cpw.mods.fml.relauncher.SideOnly;
                                        
                                        import java.util.List;
                                        
                                        import net.minecraft.block.Block;
                                        import net.minecraft.block.material.Material;
                                        import net.minecraft.enchantment.EnchantmentHelper;
                                        import net.minecraft.entity.Entity;
                                        import net.minecraft.entity.EntityLivingBase;
                                        import net.minecraft.entity.IProjectile;
                                        import net.minecraft.entity.monster.EntityEnderman;
                                        import net.minecraft.entity.player.EntityPlayer;
                                        import net.minecraft.entity.player.EntityPlayerMP;
                                        import net.minecraft.entity.projectile.EntityThrowable;
                                        import net.minecraft.init.Items;
                                        import net.minecraft.item.ItemStack;
                                        import net.minecraft.nbt.NBTTagCompound;
                                        import net.minecraft.network.play.server.S2BPacketChangeGameState;
                                        import net.minecraft.potion.Potion;
                                        import net.minecraft.potion.PotionEffect;
                                        import net.minecraft.util.AxisAlignedBB;
                                        import net.minecraft.util.DamageSource;
                                        import net.minecraft.util.MathHelper;
                                        import net.minecraft.util.MovingObjectPosition;
                                        import net.minecraft.util.Vec3;
                                        import net.minecraft.world.World;
                                        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.registry.GameRegistry;
                                        
                                        public class EntityFlechette extends Entity implements IProjectile
                                        {
                                        private int field_145791_d = -1;
                                        private int field_145792_e = -1;
                                        private int field_145789_f = -1;
                                        private Block field_145790_g;
                                        private int inData;
                                        private boolean inGround;
                                        /** 1 if the player can pick up the arrow */
                                        public int canBePickedUp;
                                        /** Seems to be some sort of timer for animating an arrow. */
                                        public int arrowShake;
                                        /** The owner of this arrow. */
                                        public Entity shootingEntity;
                                        private int ticksInGround;
                                        private int ticksInAir;
                                        private double damage = 2.0D;
                                        /** The amount of knockback an arrow applies when it hits a mob. */
                                        private int knockbackStrength;
                                        private static final String __OBFID = "CL_00001715";
                                        
                                        public EntityFlechette(World par1World)
                                        {
                                        super(par1World);
                                        this.renderDistanceWeight = 10.0D;
                                        this.setSize(0.5F, 0.5F);
                                        }
                                        
                                        public EntityFlechette(World par1World, double par2, double par4, double par6)
                                        {
                                        super(par1World);
                                        this.renderDistanceWeight = 10.0D;
                                        this.setSize(0.5F, 0.5F);
                                        this.setPosition(par2, par4, par6);
                                        this.yOffset = 0.0F;
                                        }
                                        
                                        public EntityFlechette (World par1World, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase, float par4, float par5)
                                        {
                                        super(par1World);
                                        this.renderDistanceWeight = 10.0D;
                                        this.shootingEntity = par2EntityLivingBase;
                                        
                                        if (par2EntityLivingBase instanceof EntityPlayer)
                                        {
                                        this.canBePickedUp = 1;
                                        }
                                        
                                        this.posY = par2EntityLivingBase.posY + (double)par2EntityLivingBase.getEyeHeight() - 0.10000000149011612D;
                                        double d0 = par3EntityLivingBase.posX - par2EntityLivingBase.posX;
                                        double d1 = par3EntityLivingBase.boundingBox.minY + (double)(par3EntityLivingBase.height / 3.0F) - this.posY;
                                        double d2 = par3EntityLivingBase.posZ - par2EntityLivingBase.posZ;
                                        double d3 = (double)MathHelper.sqrt_double(d0 * d0 + d2 * d2);
                                        
                                        if (d3 >= 1.0E-7D)
                                        {
                                        float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F;
                                        float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI));
                                        double d4 = d0 / d3;
                                        double d5 = d2 / d3;
                                        this.setLocationAndAngles(par2EntityLivingBase.posX + d4, this.posY, par2EntityLivingBase.posZ + d5, f2, f3);
                                        this.yOffset = 0.0F;
                                        float f4 = (float)d3 * 0.2F;
                                        this.setThrowableHeading(d0, d1 + (double)f4, d2, par4, par5);
                                        }
                                        }
                                        
                                        public EntityFlechette(World par1World, EntityLivingBase par2EntityLivingBase, float par3)
                                        {
                                        super(par1World);
                                        this.renderDistanceWeight = 10.0D;
                                        this.shootingEntity = par2EntityLivingBase;
                                        
                                        if (par2EntityLivingBase instanceof EntityPlayer)
                                        {
                                        this.canBePickedUp = 1;
                                        }
                                        
                                        this.setSize(0.5F, 0.5F);
                                        this.setLocationAndAngles(par2EntityLivingBase.posX, par2EntityLivingBase.posY + (double)par2EntityLivingBase.getEyeHeight(), par2EntityLivingBase.posZ, par2EntityLivingBase.rotationYaw, par2EntityLivingBase.rotationPitch);
                                        this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
                                        this.posY -= 0.10000000149011612D;
                                        this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
                                        this.setPosition(this.posX, this.posY, this.posZ);
                                        this.yOffset = 0.0F;
                                        this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI));
                                        this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI));
                                        this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI));
                                        this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, par3 * 1.5F, 1.0F);
                                        }
                                        
                                        protected void entityInit()
                                        {
                                        this.dataWatcher.addObject(16, Byte.valueOf((byte)0));
                                        }
                                        
                                        /**
                                        * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction.
                                        */
                                        public void setThrowableHeading(double par1, double par3, double par5, float par7, float par8)
                                        {
                                        float f2 = MathHelper.sqrt_double(par1 * par1 + par3 * par3 + par5 * par5);
                                        par1 /= (double)f2;
                                        par3 /= (double)f2;
                                        par5 /= (double)f2;
                                        par1 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8;
                                        par3 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8;
                                        par5 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8;
                                        par1 *= (double)par7;
                                        par3 *= (double)par7;
                                        par5 *= (double)par7;
                                        this.motionX = par1;
                                        this.motionY = par3;
                                        this.motionZ = par5;
                                        float f3 = MathHelper.sqrt_double(par1 * par1 + par5 * par5);
                                        this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(par1, par5) * 180.0D / Math.PI);
                                        this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(par3, (double)f3) * 180.0D / Math.PI);
                                        this.ticksInGround = 0;
                                        }
                                        
                                        /**
                                        * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX,
                                        * posY, posZ, yaw, pitch
                                        */
                                        @SideOnly(Side.CLIENT)
                                        public void setPositionAndRotation2(double par1, double par3, double par5, float par7, float par8, int par9)
                                        {
                                        this.setPosition(par1, par3, par5);
                                        this.setRotation(par7, par8);
                                        }
                                        
                                        /**
                                        * Sets the velocity to the args. Args: x, y, z
                                        */
                                        @SideOnly(Side.CLIENT)
                                        public void setVelocity(double par1, double par3, double par5)
                                        {
                                        this.motionX = par1;
                                        this.motionY = par3;
                                        this.motionZ = par5;
                                        
                                        if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F)
                                        {
                                        float f = MathHelper.sqrt_double(par1 * par1 + par5 * par5);
                                        this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(par1, par5) * 180.0D / Math.PI);
                                        this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(par3, (double)f) * 180.0D / Math.PI);
                                        this.prevRotationPitch = this.rotationPitch;
                                        this.prevRotationYaw = this.rotationYaw;
                                        this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch);
                                        this.ticksInGround = 0;
                                        }
                                        }
                                        
                                        /**
                                        * Called to update the entity's position/logic.
                                        */
                                        public void onUpdate()
                                        {
                                        super.onUpdate();
                                        
                                        if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F)
                                        {
                                        float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
                                        this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
                                        this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI);
                                        }
                                        
                                        Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f);
                                        
                                        if (block.getMaterial() != Material.air)
                                        {
                                        block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f);
                                        AxisAlignedBB axisalignedbb = block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f);
                                        
                                        if (axisalignedbb != null && axisalignedbb.isVecInside(this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ)))
                                        {
                                        this.inGround = true;
                                        }
                                        }
                                        
                                        if (this.arrowShake > 0)
                                        {
                                        –this.arrowShake;
                                        }
                                        
                                        if (this.inGround)
                                        {
                                        int j = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f);
                                        
                                        if (block == this.field_145790_g && j == this.inData)
                                        {
                                        ++this.ticksInGround;
                                        
                                        if (this.ticksInGround == 1200)
                                        {
                                        this.setDead();
                                        }
                                        }
                                        else
                                        {
                                        this.inGround = false;
                                        this.motionX *= (double)(this.rand.nextFloat() * 0.2F);
                                        this.motionY *= (double)(this.rand.nextFloat() * 0.2F);
                                        this.motionZ *= (double)(this.rand.nextFloat() * 0.2F);
                                        this.ticksInGround = 0;
                                        this.ticksInAir = 0;
                                        }
                                        }
                                        else
                                        {
                                        ++this.ticksInAir;
                                        Vec3 vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ);
                                        Vec3 vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
                                        MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false);
                                        vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ);
                                        vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
                                        
                                        if (movingobjectposition != null)
                                        {
                                        vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
                                        }
                                        
                                        Entity entity = null;
                                        List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D));
                                        double d0 = 0.0D;
                                        int i;
                                        float f1;
                                        
                                        for (i = 0; i < list.size(); ++i)
                                        {
                                        Entity entity1 = (Entity)list.get(i);
                                        
                                        if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5))
                                        {
                                        f1 = 0.3F;
                                        AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand((double)f1, (double)f1, (double)f1);
                                        MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3);
                                        
                                        if (movingobjectposition1 != null)
                                        {
                                        double d1 = vec31.distanceTo(movingobjectposition1.hitVec);
                                        
                                        if (d1 < d0 || d0 == 0.0D)
                                        {
                                        entity = entity1;
                                        d0 = d1;
                                        }
                                        }
                                        }
                                        }
                                        
                                        if (entity != null)
                                        {
                                        movingobjectposition = new MovingObjectPosition(entity);
                                        }
                                        
                                        if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer)
                                        {
                                        EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit;
                                        
                                        if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer))
                                        {
                                        movingobjectposition = null;
                                        }
                                        }
                                        
                                        float f2;
                                        float f4;
                                        
                                        if (movingobjectposition != null)
                                        {
                                        if (movingobjectposition.entityHit != null)
                                        {
                                        f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ);
                                        int k = MathHelper.ceiling_double_int((double)f2 * this.damage);
                                        
                                        if (this.getIsCritical())
                                        {
                                        k += this.rand.nextInt(k / 2 + 2);
                                        }
                                        
                                        DamageSource damagesource = null;
                                        
                                        if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman))
                                        {
                                        movingobjectposition.entityHit.setFire(5);
                                        }
                                        
                                        if (movingobjectposition.entityHit.attackEntityFrom(damagesource, (float)k))
                                        {
                                        if (movingobjectposition.entityHit instanceof EntityLivingBase)
                                        {
                                        EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit;
                                        
                                        if (!this.worldObj.isRemote)
                                        {
                                        entitylivingbase.setArrowCountInEntity(entitylivingbase.getArrowCountInEntity() + 1);
                                        }
                                        
                                        if (this.knockbackStrength > 0)
                                        {
                                        f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
                                        
                                        if (f4 > 0.0F)
                                        {
                                        movingobjectposition.entityHit.addVelocity(this.motionX * (double)this.knockbackStrength * 0.6000000238418579D / (double)f4, 0.1D, this.motionZ * (double)this.knockbackStrength * 0.6000000238418579D / (double)f4);
                                        }
                                        }
                                        
                                        if (this.shootingEntity != null && this.shootingEntity instanceof EntityLivingBase)
                                        {
                                        EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity);
                                        EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase);
                                        }
                                        
                                        if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP)
                                        {
                                        ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F));
                                        }
                                        }
                                        
                                        this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F));
                                        
                                        if (!(movingobjectposition.entityHit instanceof EntityEnderman))
                                        {
                                        this.setDead();
                                        }
                                        }
                                        else
                                        {
                                        this.motionX *= -0.10000000149011612D;
                                        this.motionY *= -0.10000000149011612D;
                                        this.motionZ *= -0.10000000149011612D;
                                        this.rotationYaw += 180.0F;
                                        this.prevRotationYaw += 180.0F;
                                        this.ticksInAir = 0;
                                        }
                                        }
                                        else
                                        {
                                        this.field_145791_d = movingobjectposition.blockX;
                                        this.field_145792_e = movingobjectposition.blockY;
                                        this.field_145789_f = movingobjectposition.blockZ;
                                        this.field_145790_g = block;
                                        this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f);
                                        this.motionX = (double)((float)(movingobjectposition.hitVec.xCoord - this.posX));
                                        this.motionY = (double)((float)(movingobjectposition.hitVec.yCoord - this.posY));
                                        this.motionZ = (double)((float)(movingobjectposition.hitVec.zCoord - this.posZ));
                                        f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ);
                                        this.posX -= this.motionX / (double)f2 * 0.05000000074505806D;
                                        this.posY -= this.motionY / (double)f2 * 0.05000000074505806D;
                                        this.posZ -= this.motionZ / (double)f2 * 0.05000000074505806D;
                                        this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F));
                                        this.inGround = true;
                                        this.arrowShake = 7;
                                        this.setIsCritical(false);
                                        
                                        if (this.field_145790_g.getMaterial() != Material.air)
                                        {
                                        this.field_145790_g.onEntityCollidedWithBlock(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f, this);
                                        }
                                        }
                                        }
                                        if (this.getIsCritical())
                                        {
                                        for (i = 0; i < 4; ++i)
                                        {
                                        this.worldObj.spawnParticle("crit", this.posX + this.motionX * (double)i / 4.0D, this.posY + this.motionY * (double)i / 4.0D, this.posZ + this.motionZ * (double)i / 4.0D, -this.motionX, -this.motionY + 0.2D, -this.motionZ);
                                        }
                                        }
                                        
                                        this.posX += this.motionX;
                                        this.posY += this.motionY;
                                        this.posZ += this.motionZ;
                                        f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
                                        this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
                                        
                                        for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f2) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F)
                                        {
                                        ;
                                        }
                                        
                                        while (this.rotationPitch - this.prevRotationPitch >= 180.0F)
                                        {
                                        this.prevRotationPitch += 360.0F;
                                        }
                                        
                                        while (this.rotationYaw - this.prevRotationYaw < -180.0F)
                                        {
                                        this.prevRotationYaw -= 360.0F;
                                        }
                                        
                                        while (this.rotationYaw - this.prevRotationYaw >= 180.0F)
                                        {
                                        this.prevRotationYaw += 360.0F;
                                        }
                                        
                                        this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F;
                                        this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F;
                                        float f3 = 0.99F;
                                        f1 = 0.05F;
                                        
                                        if (this.isInWater())
                                        {
                                        for (int l = 0; l < 4; ++l)
                                        {
                                        f4 = 0.25F;
                                        this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)f4, this.posY - this.motionY * (double)f4, this.posZ - this.motionZ * (double)f4, this.motionX, this.motionY, this.motionZ);
                                        }
                                        
                                        f3 = 0.8F;
                                        }
                                        
                                        if (this.isWet())
                                        {
                                        this.extinguish();
                                        }
                                        
                                        this.motionX *= (double)f3;
                                        this.motionY *= (double)f3;
                                        this.motionZ *= (double)f3;
                                        this.motionY -= (double)f1;
                                        this.setPosition(this.posX, this.posY, this.posZ);
                                        this.func_145775_I();
                                        }
                                        }
                                        
                                        /**
                                        * (abstract) Protected helper method to write subclass entity data to NBT.
                                        */
                                        public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound)
                                        {
                                        par1NBTTagCompound.setShort("xTile", (short)this.field_145791_d);
                                        par1NBTTagCompound.setShort("yTile", (short)this.field_145792_e);
                                        par1NBTTagCompound.setShort("zTile", (short)this.field_145789_f);
                                        par1NBTTagCompound.setShort("life", (short)this.ticksInGround);
                                        par1NBTTagCompound.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g));
                                        par1NBTTagCompound.setByte("inData", (byte)this.inData);
                                        par1NBTTagCompound.setByte("shake", (byte)this.arrowShake);
                                        par1NBTTagCompound.setByte("inGround", (byte)(this.inGround ? 1 : 0));
                                        par1NBTTagCompound.setByte("pickup", (byte)this.canBePickedUp);
                                        par1NBTTagCompound.setDouble("damage", this.damage);
                                        }
                                        
                                        /**
                                        * (abstract) Protected helper method to read subclass entity data from NBT.
                                        */
                                        public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound)
                                        {
                                        this.field_145791_d = par1NBTTagCompound.getShort("xTile");
                                        this.field_145792_e = par1NBTTagCompound.getShort("yTile");
                                        this.field_145789_f = par1NBTTagCompound.getShort("zTile");
                                        this.ticksInGround = par1NBTTagCompound.getShort("life");
                                        this.field_145790_g = Block.getBlockById(par1NBTTagCompound.getByte("inTile") & 255);
                                        this.inData = par1NBTTagCompound.getByte("inData") & 255;
                                        this.arrowShake = par1NBTTagCompound.getByte("shake") & 255;
                                        this.inGround = par1NBTTagCompound.getByte("inGround") == 1;
                                        
                                        if (par1NBTTagCompound.hasKey("damage", 99))
                                        {
                                        this.damage = par1NBTTagCompound.getDouble("damage");
                                        }
                                        
                                        if (par1NBTTagCompound.hasKey("pickup", 99))
                                        {
                                        this.canBePickedUp = par1NBTTagCompound.getByte("pickup");
                                        }
                                        else if (par1NBTTagCompound.hasKey("player", 99))
                                        {
                                        this.canBePickedUp = par1NBTTagCompound.getBoolean("player") ? 1 : 0;
                                        }
                                        }
                                        
                                        /**
                                        * Called by a player entity when they collide with an entity
                                        */
                                        public void onCollideWithPlayer(EntityPlayer par1EntityPlayer)
                                        {
                                        if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0)
                                        {
                                        boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && par1EntityPlayer.capabilities.isCreativeMode;
                                        
                                        if (this.canBePickedUp == 1 && !par1EntityPlayer.inventory.addItemStackToInventory(new ItemStack(ModMinecraft.itemFlechette, 1)))
                                        {
                                        flag = false;
                                        }
                                        
                                        if (flag)
                                        {
                                        this.playSound("random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);
                                        par1EntityPlayer.onItemPickup(this, 1);
                                        this.setDead();
                                        }
                                        }
                                        }
                                        
                                        /**
                                        * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to
                                        * prevent them from trampling crops
                                        */
                                        protected boolean canTriggerWalking()
                                        {
                                        return false;
                                        }
                                        
                                        @SideOnly(Side.CLIENT)
                                        public float getShadowSize()
                                        {
                                        return 0.0F;
                                        }
                                        
                                        public void setDamage(double par1)
                                        {
                                        this.damage = par1;
                                        }
                                        
                                        public double getDamage()
                                        {
                                        return this.damage;
                                        }
                                        
                                        /**
                                        * Whether the arrow has a stream of critical hit particles flying behind it.
                                        */
                                        public void setIsCritical(boolean par1)
                                        {
                                        byte b0 = this.dataWatcher.getWatchableObjectByte(16);
                                        
                                        if (par1)
                                        {
                                        this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1)));
                                        }
                                        else
                                        {
                                        this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2)));
                                        }
                                        }
                                        
                                        /**
                                        * Whether the arrow has a stream of critical hit particles flying behind it.
                                        */
                                        public boolean getIsCritical()
                                        {
                                        byte b0 = this.dataWatcher.getWatchableObjectByte(16);
                                        return (b0 & 1) != 0;
                                        }
                                        
                                        }
                                        
                                        

                                        Rendu ( c’est bien ca ? )

                                        package mod.common;
                                        
                                        import cpw.mods.fml.relauncher.Side;
                                        import cpw.mods.fml.relauncher.SideOnly;
                                        import net.minecraft.client.renderer.texture.IIconRegister;
                                        import net.minecraft.init.Items;
                                        import net.minecraft.item.Item;
                                        
                                        public class DinoItem extends Item
                                        {
                                        @Override
                                        public void registerIcons(IIconRegister iconregister)
                                        {
                                        this.itemIcon = iconregister.registerIcon(ModMinecraft.MODID + ":itemFlechette");
                                        }
                                        }
                                        
                                        

                                        Oui ce gif est drôle.

                                        1 Reply Last reply Reply Quote 0
                                        • robin4002
                                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                                          Le crash est causé par ça :

                                          DamageSource damagesource = null;
                                          
                                          if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman))
                                          {
                                          movingobjectposition.entityHit.setFire(5);
                                          }
                                          
                                          if (movingobjectposition.entityHit.attackEntityFrom(damagesource, (float)k))
                                          

                                          damagesource est null. Il faudrait plutôt mettre :
                                          DamageSource damagesource = shootingEntity != null ? (new EntityDamageSourceIndirect(“arrow”, this, this.shootingEntity)).setProjectile() : (new EntityDamageSourceIndirect(“arrow”, this, this)).setProjectile();

                                          Pour le rendu c’est pas du tout ça, c’est une nouvelle classe qu’il faut créé, ça fonctionne comme le rendu d’un mob.

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

                                            J’ai changer par ce que tu m’as dit donc ceci : ```
                                            DamageSource damagesource = shootingEntity != null ? (new EntityDamageSourceIndirect(“arrow”, this, this.shootingEntity)).setProjectile() : (new EntityDamageSourceIndirect(“arrow”, this, this)).setProjectile();

                                            
                                            [edit] = Ca marche !! :D Mais sa cause des dégats , et j'aimerais que sa n'en cause aucun ainsi l'effet slowness ne marche pas des idées ?
                                            
                                            

                                            public class EntitySlowingArrow extends EntityThrowable
                                            {
                                            public EntitySlowingArrow(World world)
                                            {
                                            super(world);
                                            }

                                            protected void onImpact(MovingObjectPosition mop)
                                            {
                                            Entity e = mop.entityHit;
                                            if (e != null && e instanceof EntityLivingBase)
                                            {
                                            ((EntityLivingBase) e).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 20, 1200));
                                            }
                                            }
                                            }

                                            Oui ce gif est drôle.

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 1 / 3
                                            • First post
                                              Last post
                                            Design by Woryk
                                            Contact / Mentions Légales

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB