Jump to content

Custom Bow FOV Zoom


JimiIT92

Recommended Posts

Hi everyone! I'll ask you if you please help me to complete my custom bows :) I have already done the bow and the third person render class, the last thing i miss is the fov zoom when charging the arrow, like normal bows. I saw that the function is in the EntityPlayerSP class, but i want to make it work without modifying that class. So i made a new class called EntityPlayerBow in wich i have Override that function but i doesn't works, the function doesn't even start.... Maybe i'm missing something? I think the entity should be registered somewhere but i don't know where, i've already done the EntityRegistry instruction in mod's main file but it has no effect....

Here's my EntityPlayerBow class

package mod_ores.items.render;

import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeInstance;
import net.minecraft.util.Session;
import net.minecraft.world.World;
import net.minecraftforge.client.ForgeHooksClient;

public class EntityPlayerBow extends EntityPlayerSP {

public EntityPlayerBow(Minecraft par1Minecraft, World par2World,
		Session par3Session, int par4) {
	super(par1Minecraft, par2World, par3Session, par4);
	// TODO Auto-generated constructor stub
}

@Override
public float getFOVMultiplier()
{
    float f = 1.0F;

    if (Minecraft.getMinecraft().thePlayer.capabilities.isFlying)
    {
        f *= 1.1F;
    }

    AttributeInstance attributeinstance = Minecraft.getMinecraft().thePlayer.getEntityAttribute(SharedMonsterAttributes.movementSpeed);
    f = (float)((double)f * ((attributeinstance.getAttributeValue() / (double)Minecraft.getMinecraft().thePlayer.capabilities.getWalkSpeed() + 1.0D) / 2.0D));

    if (Minecraft.getMinecraft().thePlayer.isUsingItem() && (Minecraft.getMinecraft().thePlayer.getItemInUse().itemID == mod_ores.main.rubyBow.itemID))
    {
        int i = Minecraft.getMinecraft().thePlayer.getItemInUseDuration();
        float f1 = (float)i / 20.0F;

        if (f1 > 1.0F)
        {
            f1 = 1.0F;
        }
        else
        {
            f1 *= f1;
        }

        f *= 1.0F - f1 * 0.15F;
    }

    return ForgeHooksClient.getOffsetFOV(Minecraft.getMinecraft().thePlayer, f);
}

}

 

And the instruction in the mod's main file

EntityRegistry.registerGlobalEntityID(EntityPlayerBow.class, "PlayerBow", 0);

 

Hope someone will help me :D Have a nice day :)

Don't blame me if i always ask for your help. I just want to learn to be better :)

Link to comment
Share on other sites

Use the FOVUpdateEvent to add the part with

if (Minecraft.getMinecraft().thePlayer.isUsingItem() && (Minecraft.getMinecraft().thePlayer.getItemInUse().itemID == mod_ores.main.rubyBow.itemID))
    ...

 

Is this what will make minecraft use the iconArray where the pulling_0, pulling_1, and pulling_2 textures are used? That's the main issue for my custom bow I need to get fixed.

Link to comment
Share on other sites

I have those set in my Custom Bow class which extends Item with the code base copied from ItemBow, however in the game it shows my goldenBow_standby and the shows an awkward texture trying to stretch the standby bow instead of the goldenBowpulling_0, 1, or 2 textures.

 

public class WeaponGoldenBow extends Item
{

    public static final String[] bowPullIconNameArray = new String[] {"pulling_0", "pulling_1", "pulling_2"};
    @SideOnly(Side.CLIENT)
    private Icon[] iconArray;

.....

@SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister par1IconRegister)
    {
        this.itemIcon = par1IconRegister.registerIcon(this.getIconString() + "_standby");
        this.iconArray = new Icon[bowPullIconNameArray.length];

        for (int i = 0; i < this.iconArray.length; ++i)
        {
            this.iconArray[i] = par1IconRegister.registerIcon(this.getIconString() + "_" + bowPullIconNameArray[i]);
        }
    }

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.