Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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 rocket

 

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?

Edited by Loghan

I merged your second post with the original , there is no need to post a new thread asking for an answer.

If someone sees your post and can help, they will reply.

If you are seeking a quicker response, you could try asking in the Minecraft Forge diacord.

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.