Jump to content

[1.16.5] Custom entity is invisible (render not being called)


Recommended Posts

Posted

I have been attempting to make a spear for my mod, and up until now everything had been going fairly well by using the trident as a guide. The problem is that I absolutely cannot get the entity to render. As in, at all. 
I am registering the renderer, and I've confirmed the event is being called for it.
 

@OnlyIn(Dist.CLIENT)
public void ClientSetup(FMLClientSetupEvent event)
{
  if(Config.flailEnabled.get())ModItems.RegisterFlailOverrides();

  MinecraftForge.EVENT_BUS.addListener(ClientEvents::OnClick);
  MinecraftForge.EVENT_BUS.addListener(ClientEvents::OnKeyPressed);

  RenderingRegistry.registerEntityRenderingHandler(ModEntities.SPEAR.get(), RenderSpear::new);
}

The other 3 lines here work perfectly.

Here is the renderer:

public class RenderSpear extends EntityRenderer<SpearEntity>
{
    public RenderSpear(EntityRendererManager manager)
    {
        super(manager);
    }

    @Override
    public void render(SpearEntity spearEntity, float yaw, float partialTicks, MatrixStack matrix, @NotNull IRenderTypeBuffer buffer, int light)
    {
        System.out.println("the funny");
        matrix.pushPose();
        //todo: translate/rotate/scale matrix
        Minecraft mc = Minecraft.getInstance();

        mc.getItemRenderer().render(spearEntity.spearItem, ItemCameraTransforms.TransformType.FIXED, false, matrix, buffer, light, OverlayTexture.NO_OVERLAY, mc.getItemRenderer().getModel(spearEntity.spearItem, spearEntity.level, null));
        matrix.popPose();
    }

    @Override
    public ResourceLocation getTextureLocation(@NotNull SpearEntity entity)
    {
        return null;
    }
}

The println at the top does not print, proving this method is not being called. 

The entity itself works fine, I can throw it and deal damage just like a trident. It just won't render.

Posted

For those that might stumble upon this post with the same problem in the future: The solution in this case was to add this to the entity class:

@Override
public IPacket<?> getAddEntityPacket()
{
    return NetworkHooks.getEntitySpawningPacket(this);
}

A rule of thumb: If you custom entity is not a LivingEntity, then you need to override getAddEntityPacket(). This is due to the fact that vanilla handles non-living entity spawn packets in a hard coded way.

  • Thanks 1

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hi everyone, I’m working on a custom rocket entity in Forge 1.20.1. During flight, I’m trying to spawn flame and smoke particles that trail behind the rocket, like in Ad Astra or Galacticraft. I’m using ServerLevel.sendParticles() with calculated Y-offsets far below the rocket's base (e.g., getY() - 2.5), so the particles should clearly appear under the rocket thruster. ❗The Problem: Even though I spawn the particles several blocks below the rocket, they still start rising and eventually collide with the rocket from below. It's like the particles are moving upward with the rocket, even though their Y position is set in absolute world coordinates (not relative to the rocket). This causes the trail to look broken, unrealistic, and eventually the flames just slam into the rocket's base, defeating the effect. 🔍 What I’ve Tried: Double-checked that I’m using server.sendParticles(...) with proper world coordinates. Increased vertical offset (up to -3 blocks or more). Spawned debug markers (armor stands) and verified their position is correctly placed far below. Tried spawning trail particles after calling move(MoverType.SELF, ...). Confirmed this only happens when the rocket is moving upwards — at rest, particles stay where they’re supposed to. 🔥 Code Snippet:   double rocketBottomY = this.getY() - 2.5; double trailSpacing = 0.12; for (int i = 0; i < 40; i++) {     double offsetX = (random.nextDouble() - 0.5) * 0.2;     double offsetZ = (random.nextDouble() - 0.5) * 0.2;     double flameY = rocketBottomY - (i * trailSpacing);     server.sendParticles(ParticleTypes.FLAME,             this.getX() + offsetX,             flameY,             this.getZ() + offsetZ,             3, 0.0, 0.0, 0.0, 0.01); }   No matter how far I place the flameY below, it still starts drifting upward with the rocket. I’m not applying velocity to the particles (0.0 on Y), so I have no idea what’s making them rise and then crash into the rock   ❓Question Has anyone dealt with this before? How do mods like Galacticraft or Ad Astra keep their flame trails pinned to the world while the rocket moves up? Is this a side-effect of how Forge or Minecraft queues particle updates for moving entities?
    • But can you load this schematic with worldedit? Or is it a nbt file?
    • and thee schematic is called steampunk 1_16 i play on 1.16.5
×
×
  • Create New...

Important Information

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