Posted February 12, 20205 yr Made a custom projectile, with it's own renderer but the when I right click to throw the projectile it spawns a... pig instead of my custom texture lol Item class Spoiler public class ItemBatarang extends Item { public ItemBatarang(Item.Properties properties) { super(properties); setRegistryName("item_batarang"); } public AbstractArrowEntity createBatarang(World worldIn, ItemStack stack, LivingEntity shooter) { ArrowEntity arrowentity = new ArrowEntity(worldIn, shooter); arrowentity.setPotionEffect(stack); return arrowentity; } @Override public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) { ItemStack stack = playerIn.getHeldItem(handIn); Vec3d look = playerIn.getLookVec(); EntityBatarang batarang = new EntityBatarang(1.0D,1.0D,1.0D,worldIn); batarang.setPosition(playerIn.getPosX() + look.x * 1D, playerIn.getPosY() + look.y * 1D, playerIn.getPosZ() + look.z + look.z * 1D); batarang.shoot(playerIn, playerIn.rotationPitch, playerIn.rotationYaw, 0.0F,1.5F,0.5F); if (!worldIn.isRemote) { worldIn.addEntity(batarang); } worldIn.playSound(null,playerIn.getPosition(), SoundEvents.BLOCK_ANVIL_HIT, SoundCategory.PLAYERS,1.0f,1.0f); return new ActionResult<ItemStack>(ActionResultType.SUCCESS, stack); } } Entity class Spoiler public class EntityBatarang extends ThrowableEntity { public static final EntityType<EntityBatarang> BATARANG = register(); protected EntityBatarang(EntityType<? extends ThrowableEntity> type, World worldIn) { super(BATARANG,worldIn); } @Override public IPacket<?> createSpawnPacket() { return NetworkHooks.getEntitySpawningPacket(this); } protected EntityBatarang(double x, double y, double z, World worldIn) { super(EntityBatarang.BATARANG, x, y, z, worldIn); } protected EntityBatarang(EntityType<? extends ThrowableEntity> type, LivingEntity livingEntityIn, World worldIn) { super(EntityBatarang.BATARANG, livingEntityIn, worldIn); } protected Item getDefaultItem() { return ItemHolder.BATARANG; } @Override protected void onImpact(RayTraceResult result) { if (!this.world.isRemote) { if (result instanceof EntityRayTraceResult) { EntityRayTraceResult entityRayTraceResult = (EntityRayTraceResult) result; if(entityRayTraceResult.getEntity() instanceof MobEntity) { MobEntity entity = (MobEntity) entityRayTraceResult.getEntity(); entity.setFire(20); entity.setHealth(0); } } } } @Override protected void registerData() { } public static EntityType register() { return EntityType.Builder.<EntityBatarang>create(EntityBatarang::new, EntityClassification.MISC).size(0.8F, 0.8F).build("batarang").setRegistryName(ComicUniverse.MODID,"batarang"); } } Entity Renderer Spoiler public class BatarangRenderer extends EntityRenderer<EntityBatarang> { private static final ResourceLocation TEXTURE = new ResourceLocation(ComicUniverse.MODID,"textures/materials/batman_chest_part.png"); public BatarangRenderer(EntityRendererManager renderManager) { super(renderManager); renderManager.getFontRenderer().drawStringWithShadow("Batarang",0,0.5f,2); } @Override public void render(EntityBatarang entityIn, float entityYaw, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int packedLightIn) { super.render(entityIn, entityYaw, partialTicks, matrixStackIn, bufferIn, packedLightIn); } @Override public ResourceLocation getEntityTexture(EntityBatarang entity) { return TEXTURE; } }
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.