Jump to content

Custom modded arrow won’t render after being shot 1.12.2


Nathan0315

Recommended Posts

  • 2 months later...

Hi, 

I'm having the same issue I have a custom bow (cannon) and an arrow which is a gem that will turn into a laser. Everything works but the arrow, even out of the normal Minecraft bow its invisible.

 

cannon class:

package com.ClueDoh.test.objects.items.cannon;

import javax.annotation.Nullable;
import javax.swing.Action;

import com.ClueDoh.test.Main;
import com.ClueDoh.test.TestItemGroups;
import com.ClueDoh.test.init.ModItems;
import com.ClueDoh.test.util.IHasModel;

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.item.IItemPropertyGetter;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBow;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class CannonBase extends ItemBow implements IHasModel
{
	public CannonBase(String name) 
	{
		setUnlocalizedName(name);
		setRegistryName(name);
		setCreativeTab(TestItemGroups.TESTITEMS);
		setMaxStackSize(1);
		setMaxDamage(800);
		
		ModItems.ITEMS.add(this);

	this.addPropertyOverride(new ResourceLocation("pull"), new IItemPropertyGetter()
    {
        @SideOnly(Side.CLIENT)
        public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn)
        {
            if (entityIn == null)
            {
                return 0.0F;
            }
            else
            {
                return entityIn.getActiveItemStack().getItem() != ModItems.CANNON ? 0.0F : (float)(stack.getMaxItemUseDuration() - entityIn.getItemInUseCount()) / 20.0F;
            }
        }
    });
    this.addPropertyOverride(new ResourceLocation("pulling"), new IItemPropertyGetter()
    {
        @SideOnly(Side.CLIENT)
        public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn)
        {
            return entityIn != null && entityIn.isHandActive() && entityIn.getActiveItemStack() == stack ? 1.0F : 0.0F;
        }
    });
	
	ModItems.ITEMS.add(this);
}

@Override
public int getItemEnchantability() 
{
	return 10;
}

protected boolean isArrow(ItemStack stack) 
{
	if(stack.getItem() == ModItems.GEM)
	{
		return true;
	}
	return false;
}
@Override
public void registerModels() 

{
	
	Main.proxy.registerItemRenderer(this, 0, "inventory");

	
}

    
}

 

 

Gem Class (arrow):

package com.ClueDoh.test.objects.items.cannon;

import com.ClueDoh.test.Main;
import com.ClueDoh.test.TestItemGroups;
import com.ClueDoh.test.entity.laser.EntityLaser;
import com.ClueDoh.test.init.ModItems;
import com.ClueDoh.test.util.IHasModel;

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.item.ItemArrow;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class GemBase extends ItemArrow implements IHasModel
{
	public GemBase(String name) 
	{
		setUnlocalizedName(name);
		setRegistryName(name);
		setCreativeTab(TestItemGroups.TESTITEMS);
		
		ModItems.ITEMS.add(this);
	}
	
	
	public void registerModels() 
	{
		
		Main.proxy.registerItemRenderer(this, 0, "inventory");

		
	}	
	@Override
	public EntityArrow createArrow(World worldIn, ItemStack stack, EntityLivingBase shooter) 
	{
		EntityLaser entityLaser = new EntityLaser(worldIn, shooter);
		return entityLaser;
	}
	

}

 

 

EntityLaser:

package com.ClueDoh.test.entity.laser;

import java.util.Random;

import com.ClueDoh.test.init.ModItems;

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.World;

public class EntityLaser extends EntityArrow 
{
	public EntityLaser(World worldIn) 
	{
		super(worldIn);
	}
	
	public EntityLaser(World worldIn, double x, double y, double z) 
	{
		super(worldIn, x, y, z);
	}
	
	public EntityLaser(World worldIn, EntityLivingBase shooter) 
	{
		super(worldIn, shooter);
	}
	
	@Override
	protected ItemStack getArrowStack() 
	{
		return new ItemStack(ModItems.GEM);
	}
	
	@Override
	protected void arrowHit(EntityLivingBase living) 
	{
		super.arrowHit(living);
	}
	
	@Override
	public void onUpdate() 
	{
		super.onUpdate();
		if(this.world.isRemote)
		{
			if(this.inGround)
			{
				if(this.timeInGround % 5 == 0)
				{
					this.spawnParticles(1);
				}
			}
			else
			{
				this.spawnParticles(2);
			}
		}
	}
	
	private void spawnParticles(int particleCount)
	{
		Random rand = new Random();
		int i = rand.nextInt(15);
		double d0 = (double)(i >> 16 & 255) / 255.0D;
		double d1 = (double)(i >> 8 & 255) / 255.0D;
		double d2 = (double)(i >> 0 & 255) / 255.0D;
		for(int j = 0; j < particleCount; ++j)
		{
			this.world.spawnParticle(EnumParticleTypes.DRIP_LAVA, this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, this.posY + this.rand.nextDouble() * (double)this.height, this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, d0, d1, d2);
		}
	}
	
}

 

 

RenderLaser:

package com.ClueDoh.test.entity.laser;

import com.ClueDoh.test.util.Reference;

import net.minecraft.client.renderer.entity.RenderArrow;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;


public class RenderLaser extends RenderArrow<EntityLaser>
{
	public RenderLaser(RenderManager manager) 
	{
		super(manager);
	}
	
	@Override
	protected ResourceLocation getEntityTexture(EntityLaser entity) 
	{
		return new ResourceLocation(Reference.MOD_ID + ":textures/entity/laser/laser.png");
	}

}

 

can someone help I've been searching the web for hours trying to fix this and been working on a gun for 2 days? HELP!!!

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

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