Posted March 29, 20214 yr So I have created this class for rendering a projectile that extends SpriteRenderer, but when I try to override getEntityTexture I get this error: 'getEntityTexture(Entity)' in 'com.aylias.minecraft.mods.modbase.client.renders.CorruptPearlRenderer' clashes with 'getEntityTexture(T)' in 'net.minecraft.client.renderer.entity.EntityRenderer'; both methods have same erasure, yet neither overrides the other How do I override it without getting this error? I have tried googling the error, even as just "both methods have same erasure, yet neither overrides the other" but found nothing that can help. Here is the class: package com.aylias.minecraft.mods.modbase.client.renders; import com.aylias.minecraft.mods.modbase.ModBase; import com.aylias.minecraft.mods.modbase.entities.CorruptPearlEntity; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.entity.SpriteRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.client.registry.IRenderFactory; @OnlyIn(Dist.CLIENT) public class CorruptPearlRenderer extends SpriteRenderer<CorruptPearlEntity> { public CorruptPearlRenderer(EntityRendererManager renderManagerIn, ItemRenderer itemRendererIn) { super(renderManagerIn, itemRendererIn); } @Override public ResourceLocation getEntityTexture(Entity entity) { return new ResourceLocation(ModBase.MODID, "textures/item/corrupt_pearl.png"); } public static class RenderFactory implements IRenderFactory<CorruptPearlEntity> { @Override public EntityRenderer<? super CorruptPearlEntity> createRenderFor(EntityRendererManager manager) { manager.setRenderShadow(false); return new CorruptPearlRenderer(manager, Minecraft.getInstance().getItemRenderer()); } } } Edited March 29, 20214 yr by NullDev It was solved!
March 29, 20214 yr Do you really need to extend the sprite renderer? Just override getDefaultItem in your CorruptPearlEntity class and return the corresponding item Check out the port of the BetterEnd fabric mod (WIP): https://www.curseforge.com/minecraft/mc-mods/betterend-forge-port
March 29, 20214 yr Author 21 minutes ago, Beethoven92 said: Just override getDefaultItem in your CorruptPearlEntity class and return the corresponding item I have already done that, but it just assumes the texture of the normal ender pearl not the one attached to the corrupt pearl item, even if I don't register the CorruptPearlRenderer it still just looks like an ender pearl. @Override protected Item getDefaultItem() { return RegistryHandler.CORRUPT_PEARL.get(); }
March 29, 20214 yr Show your whole code please Check out the port of the BetterEnd fabric mod (WIP): https://www.curseforge.com/minecraft/mc-mods/betterend-forge-port
March 29, 20214 yr Author 1 minute ago, Beethoven92 said: Show your whole code please Corrupt Pearl Entity package com.aylias.minecraft.mods.modbase.entities; import com.aylias.minecraft.mods.modbase.util.CorruptPearlReboundEvents; import com.aylias.minecraft.mods.modbase.util.EntityRegisters; import com.aylias.minecraft.mods.modbase.util.RegistryHandler; import net.minecraft.client.renderer.ItemModelMesher; import net.minecraft.client.renderer.entity.ArrowRenderer; import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.entity.model.EntityModel; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.item.EnderPearlEntity; import net.minecraft.entity.monster.EndermiteEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.math.EntityRayTraceResult; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.World; public class CorruptPearlEntity extends EnderPearlEntity { CorruptPearlReboundEvents.Rebounder toActivate; public CorruptPearlEntity(World worldIn, LivingEntity throwerIn) { super(worldIn, throwerIn); CorruptPearlReboundEvents.addRebounder(throwerIn); toActivate = CorruptPearlReboundEvents.toRebound.get(CorruptPearlReboundEvents.toRebound.size() - 1); } public CorruptPearlEntity(World worldIn, double x, double y, double z) { super(worldIn, x, y, z); } public CorruptPearlEntity(EntityType<? extends EnderPearlEntity> p_i50153_1_, World p_i50153_2_) { super(p_i50153_1_, p_i50153_2_); } @Override protected void onImpact(RayTraceResult result) { toActivate.activate(); super.onImpact(result); } @Override protected Item getDefaultItem() { return RegistryHandler.CORRUPT_PEARL.get(); } }
March 29, 20214 yr Do you have a repository? If so, please post a link to it Check out the port of the BetterEnd fabric mod (WIP): https://www.curseforge.com/minecraft/mc-mods/betterend-forge-port
March 29, 20214 yr Author 17 minutes ago, Beethoven92 said: Do you have a repository? If so, please post a link to it https://github.com/AyliasTheCoder/TheSecretsOfRetexturedMC
March 29, 20214 yr Your entity is in fact bound to an EntityType<EnderPearlEntity>, instead of your custom pearl entity type, see that in your entity constructors your are not passing in any entity type because the super class(EnderPearlEntity) already provides its own, which is not what you want..i suggest you just extend the projectile item entity class and replicate the Ender pearl behavior where needed Edited March 29, 20214 yr by Beethoven92 Check out the port of the BetterEnd fabric mod (WIP): https://www.curseforge.com/minecraft/mc-mods/betterend-forge-port
March 29, 20214 yr Author 1 hour ago, Beethoven92 said: i suggest you just extend the projectile item entity class and replicate the Ender pearl behavior where needed I have done that, but now the entity is just invisible... I uploaded the new code to the repository.
March 29, 20214 yr You need to override createSpawnPacket in your entity, and return NetworkHooks.getEntitySpawningPacket Edited March 29, 20214 yr by Beethoven92 Check out the port of the BetterEnd fabric mod (WIP): https://www.curseforge.com/minecraft/mc-mods/betterend-forge-port
March 29, 20214 yr Author 26 minutes ago, Beethoven92 said: You need to override createSpawnPacket in your entity, and return NetworkHooks.getEntitySpawningPacket @Override public IPacket<?> createSpawnPacket() { return NetworkHooks.getEntitySpawningPacket(this); } That crashed the game when I threw it.
March 29, 20214 yr Because you still have to bind a renderer to the entity. The default SpriteRenderer should be fine Check out the port of the BetterEnd fabric mod (WIP): https://www.curseforge.com/minecraft/mc-mods/betterend-forge-port
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.