MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Animations arc

    Planifier Épinglé Verrouillé Déplacé Résolu Anciennes versions
    1.6.4
    9 Messages 3 Publieurs 3.2k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • Z Hors-ligne
      Zexxion
      dernière édition par

      Bonjour,
      J’ai créé un nouvel arc. Jusque là, tout va bien.
      Les seuls problèmes sont les suivantes:

      • Lorsqu’on vise avec ce nouvel arc, il n’y a pas de zoom (fov).
      • Le rendu lorsqu’on tire avec l’arc ne se fait pas.

      En Vanilla, je sais qu’il faut ajouter notre item dans le RenderPlayer.java, mais sous Forge, je ne sais pas comment faire.
      Voici la class de mon arc: ```java
      package monMod;

      import cpw.mods.fml.relauncher.Side;
      import cpw.mods.fml.relauncher.SideOnly;
      import net.minecraft.client.renderer.texture.IconRegister;
      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.item.EnumAction;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.Icon;
      import net.minecraft.world.World;

      import net.minecraftforge.common.MinecraftForge;
      import net.minecraftforge.event.entity.player.ArrowLooseEvent;
      import net.minecraftforge.event.entity.player.ArrowNockEvent;

      public class ItemBowEmerald extends Item
      {

      private static String[] bowpullname = new String[] {“bow_pull_emerald_0”, “bow_pull_emerald_1”, “bow_pull_emerald_2”};
      @SideOnly(Side.CLIENT)
      private Icon[] iconbuffer;

      public ItemBowEmerald(int par1)
      {
      super(par1);
      this.maxStackSize = 1;
      this.setMaxDamage(384);
      this.setCreativeTab(CreativeTabs.tabCombat);
      this.setFull3D();
      }

      /**

      • 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(Item.arrow.itemID))
      {
      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);
      entityarrow.setDamage(3.8D);

      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(Item.arrow.itemID);
      }

      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)
        {
        this.setFull3D();
        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(Item.arrow.itemID))
      {
      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(IconRegister iconregister)
      {
      iconbuffer = new Icon[bowpullname.length];
      for(int i = 0; i < bowpullname.length; i++)
      {
      iconbuffer* = iconregister.registerIcon(“rm:” + bowpullname*);
      }
      itemIcon = iconregister.registerIcon(“rm:bowEmerald”);
      }

      public Icon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining)
      {
      if(usingItem != null && usingItem.getItem().itemID == ZexxionMod.bowEmerald.itemID)
      {
      int k = usingItem.getMaxItemUseDuration() - useRemaining;
      if(k >= 18)
      return iconbuffer[2];
      if(k > 13)
      return iconbuffer[1];
      if(k > 0)
      return iconbuffer[0];
      }
      return getIconIndex(stack);
      }

      @SideOnly(Side.CLIENT)

      /**

      • used to cycle through icons based on their used duration, i.e. for the bow
        */
        public Icon getItemIconForUseDuration(int par1)
        {
        return this.iconbuffer[par1];
        }
        }
      
      Voici un screen d'un arc normal: ![](http://coolcraft.fr/images/arc1.png)
      Voici un screen de mon arc: ![](http://coolcraft.fr/images/arc2.png)
      
      J'ai bien ajouté le this.setFull3D();
      
      Je vous remercie d'avance.
      (Désolé pour toutes les demandes d'aides que je fais ^^')
      1 réponse Dernière réponse Répondre Citer 0
      • letherman255L Hors-ligne
        letherman255
        dernière édition par

        Essaye d’extends ton item ItemBow.

        1 réponse Dernière réponse Répondre Citer 0
        • Z Hors-ligne
          Zexxion
          dernière édition par

          Ca ne marche pas :s

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            Étrange, normalement le fait d’hériter de ItemBow devrait corriger le problème vu que dans les fonctions de mc il test si l’item est d’instance ItemBow.
            Sinon il faudrait utiliser l’event de rendu de joueur.

            1 réponse Dernière réponse Répondre Citer 0
            • Z Hors-ligne
              Zexxion
              dernière édition par

              Non il est si l’item est item.bow non ?

              else if (itemstack1.itemID == Item.bow.itemID)
              {
              f11 = 0.625F;
              GL11.glTranslatef(0.0F, 0.125F, 0.3125F);
              GL11.glRotatef(-20.0F, 0.0F, 1.0F, 0.0F);
              GL11.glScalef(f11, -f11, f11);
              GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F);
              GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
              }
              
              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                Je vais regarder.
                Sinon, enlève le setFull3D ici, il sert à rien comme tu l’as déjà dans le constructeur :

                public EnumAction getItemUseAction(ItemStack par1ItemStack)
                {
                return EnumAction.bow;
                }
                
                1 réponse Dernière réponse Répondre Citer 0
                • Z Hors-ligne
                  Zexxion
                  dernière édition par

                  D’accord merci

                  1 réponse Dernière réponse Répondre Citer 0
                  • Z Hors-ligne
                    Zexxion
                    dernière édition par

                    Petit up

                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002R Hors-ligne
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                      dernière édition par

                      http://www.minecraftforgefrance.fr/showthread.php?tid=556&pid=6186#pid6186
                      Voila mes recherches pour modifier le rendu en jeu.

                      1 réponse Dernière réponse Répondre Citer 0
                      • 1 / 1
                      • Premier message
                        Dernier message
                      Design by Woryk
                      ContactMentions Légales

                      MINECRAFT FORGE FRANCE © 2024

                      Powered by NodeBB