diff --git a/src/dehacked.c b/src/dehacked.c
index c546f44313e285940491d8ba4becfe671815d580..f70615af62b99000d96f045f41676a80b701fbdd 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -7517,6 +7517,7 @@ static const char *const MOBJTYPE_LIST[] = {  // array length left dynamic for s
 	"MT_DUSTLAYER",
 	"MT_ARIDDUST",
 	"MT_MINECART",
+	"MT_MINECARTSEG",
 	"MT_MINECARTSPAWNER",
 	"MT_MINECARTEND",
 	"MT_MINECARTENDSOLID",
diff --git a/src/info.c b/src/info.c
index 93d6f1b64d107fb1e27e8b0734d7d7bcd09f032e..09d2c5184f7ffb6d08e3dd3bc9321601566023f0 100644
--- a/src/info.c
+++ b/src/info.c
@@ -11881,6 +11881,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		MT_MINECARTSIDEMARK // raisestate
 	},
 
+	{          // MT_MINECARTSEG
+		-1,             // doomednum
+		S_INVISIBLE,    // spawnstate
+		1,              // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,       // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,              // painchance
+		sfx_None,       // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		FRACUNIT,       // radius
+		32*FRACUNIT,    // height
+		0,              // display offset
+		100,            // mass
+		0,              // damage
+		sfx_None,       // activesound
+		MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP,    // flags
+		S_NULL          // raisestate
+	},
+
 	{          // MT_MINECARTSPAWNER
 		1219,           // doomednum
 		S_INVISIBLE,    // spawnstate
diff --git a/src/info.h b/src/info.h
index 717f659c93234fbb49dcb8af996ecd061ea47664..3e4243bdb43eff29f4976ba0cdbf707dc662262e 100644
--- a/src/info.h
+++ b/src/info.h
@@ -4302,6 +4302,7 @@ typedef enum mobj_type
 	MT_DUSTLAYER,
 	MT_ARIDDUST,
 	MT_MINECART,
+	MT_MINECARTSEG,
 	MT_MINECARTSPAWNER,
 	MT_MINECARTEND,
 	MT_MINECARTENDSOLID,
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 776495ccd67e0cc10baaedeed0f0385ce4b01162..bfec5af7874a0403d5f2d31da38b0ef9c5c0bd8f 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -6740,7 +6740,7 @@ static void P_SpawnMinecartSegments(mobj_t *mobj, boolean mode)
 
 	for (i = 0; i < 4; i++)
 	{
-		seg = P_SpawnMobj(x, y, z, MT_PARTICLE);
+		seg = P_SpawnMobj(x, y, z, MT_MINECARTSEG);
 		P_SetMobjState(seg, (statenum_t)(S_MINECARTSEG_FRONT + i));
 		if (i >= 2)
 			seg->extravalue1 = (i == 2) ? -18 : 18;
@@ -8640,6 +8640,10 @@ void P_MobjThinker(mobj_t *mobj)
 	// Check fuse
 	if (mobj->fuse)
 	{
+
+		if (mobj->type == MT_SNAPPER_HEAD || mobj->type == MT_SNAPPER_LEG || mobj->type == MT_MINECARTSEG)
+			mobj->flags2 ^= MF2_DONTDRAW;
+
 		mobj->fuse--;
 		if (!mobj->fuse)
 		{