diff --git a/Build/Configurations/Includes/SRB222_common.cfg b/Build/Configurations/Includes/SRB222_common.cfg
index 90c85cdea40827970a7b44222e9a2f6a5e2668f6..cc1a0b5ba81e6008fbd638cdfd3e12c715930dc1 100644
--- a/Build/Configurations/Includes/SRB222_common.cfg
+++ b/Build/Configurations/Includes/SRB222_common.cfg
@@ -100,6 +100,10 @@ mapformat_udmf
 	// Disable Doom-related modes that don't make sense for SRB2
 	soundsupport = false;
 	automapsupport = false;
+	
+	// Enables support for 3D floors (not really, since support for 3D floors is pretty much hard-coded, but
+	// this tells plugins that the game supports 3D floors)
+	effect3dfloorsupport = true;
 
 	// When this is set to true, sectors with the same tag will light up when a line is highlighted
 	linetagindicatesectors = false;
diff --git a/Source/Plugins/3DFloorMode/BuilderPlug.cs b/Source/Plugins/3DFloorMode/BuilderPlug.cs
index 102d7d9c21508c64f5533604282fc0094ff56da8..08254b42844324f8d9a1c72f76d5bc2462c63b0c 100644
--- a/Source/Plugins/3DFloorMode/BuilderPlug.cs
+++ b/Source/Plugins/3DFloorMode/BuilderPlug.cs
@@ -197,7 +197,7 @@ namespace CodeImp.DoomBuilder.ThreeDFloorMode
 		{
 			base.OnMapNewEnd();
 
-			controlsectorarea = new ControlSectorArea(-512, 0, 512, 0, 64, 56);
+			controlsectorarea = new ControlSectorArea(-512, 0, 512, 0, 32, 28);
 			BuilderPlug.Me.ControlSectorArea.LoadConfig();
 
 			slopevertexgroups.Clear();
@@ -209,7 +209,7 @@ namespace CodeImp.DoomBuilder.ThreeDFloorMode
 		{
 			base.OnMapOpenEnd();
 
-			controlsectorarea = new ControlSectorArea(-512, 0, 512, 0, 64, 56);
+			controlsectorarea = new ControlSectorArea(-512, 0, 512, 0, 32, 28);
 			BuilderPlug.Me.ControlSectorArea.LoadConfig();
 
 			// Try to find the slope data sector and store slope information in it
diff --git a/Source/Plugins/3DFloorMode/Controls/ThreeDFloorControl.cs b/Source/Plugins/3DFloorMode/Controls/ThreeDFloorControl.cs
index 891c32bb68ecb4d79bd53cd24711f431c23f2d7f..802539b9511c3f5d44a70091e2c52e844a45eefb 100644
--- a/Source/Plugins/3DFloorMode/Controls/ThreeDFloorControl.cs
+++ b/Source/Plugins/3DFloorMode/Controls/ThreeDFloorControl.cs
@@ -78,9 +78,9 @@ namespace CodeImp.DoomBuilder.ThreeDFloorMode
 			sectorCeilingHeight.Text = General.Settings.DefaultCeilingHeight.ToString();
 			sectorFloorHeight.Text = General.Settings.DefaultFloorHeight.ToString();
 
-			typeArgument.Setup(General.Map.Config.LinedefActions[160].Args[1]);
-			flagsArgument.Setup(General.Map.Config.LinedefActions[160].Args[2]);
-			alphaArgument.Setup(General.Map.Config.LinedefActions[160].Args[3]);
+			typeArgument.Setup(General.Map.Config.LinedefActions[100].Args[4]);
+			flagsArgument.Setup(General.Map.Config.LinedefActions[100].Args[3]);
+			alphaArgument.Setup(General.Map.Config.LinedefActions[100].Args[1]);
 
 			typeArgument.SetDefaultValue();
 			flagsArgument.SetDefaultValue();
@@ -161,9 +161,9 @@ namespace CodeImp.DoomBuilder.ThreeDFloorMode
 			sectorFloorHeight.Text = threeDFloor.BottomHeight.ToString();
 			borderHeightLabel.Text = (threeDFloor.TopHeight - threeDFloor.BottomHeight).ToString();
 
-			typeArgument.Setup(General.Map.Config.LinedefActions[160].Args[1]);
-			flagsArgument.Setup(General.Map.Config.LinedefActions[160].Args[2]);
-			alphaArgument.Setup(General.Map.Config.LinedefActions[160].Args[3]);
+			typeArgument.Setup(General.Map.Config.LinedefActions[100].Args[4]);
+			flagsArgument.Setup(General.Map.Config.LinedefActions[100].Args[3]);
+			alphaArgument.Setup(General.Map.Config.LinedefActions[100].Args[1]);
 
 			typeArgument.SetValue(threeDFloor.Type);
 			flagsArgument.SetValue(threeDFloor.Flags);
diff --git a/Source/Plugins/3DFloorMode/ThreeDFloor.cs b/Source/Plugins/3DFloorMode/ThreeDFloor.cs
index 440814067026806d0ae1c20d842298ef20b2ef76..932c6f7426be2bd235bbf7e4cafde92ddb6ab4a8 100644
--- a/Source/Plugins/3DFloorMode/ThreeDFloor.cs
+++ b/Source/Plugins/3DFloorMode/ThreeDFloor.cs
@@ -136,9 +136,9 @@ namespace CodeImp.DoomBuilder.ThreeDFloorMode
 				{
 					bordertexture = sd.MiddleTexture;
 					udmftag = sd.Line.Args[0];
-					type = sd.Line.Args[1];
-					flags = sd.Line.Args[2];
-					alpha = sd.Line.Args[3];
+					type = sd.Line.Args[4];
+					flags = sd.Line.Args[3];
+					alpha = sd.Line.Args[1];
 					linedefproperties = new LinedefProperties(sd.Line);
 					sectorproperties = new SectorProperties(sector);
 
@@ -199,9 +199,9 @@ namespace CodeImp.DoomBuilder.ThreeDFloorMode
 
 			line.Action = 100;
 			line.Args[0] = tag;
-			line.Args[1] = type;
-			line.Args[2] = flags;
-			line.Args[3] = alpha;
+			line.Args[4] = type;
+			line.Args[3] = flags;
+			line.Args[1] = alpha;
 		}
 
 		public void UpdateGeometry()
diff --git a/Source/Plugins/3DFloorMode/ThreeDFloorMode.cs b/Source/Plugins/3DFloorMode/ThreeDFloorMode.cs
index 823d530219ef2a394ab3ef29448507e9b4791fea..529205a2dfc43ea6a5e61ce5058a8d15291d7943 100644
--- a/Source/Plugins/3DFloorMode/ThreeDFloorMode.cs
+++ b/Source/Plugins/3DFloorMode/ThreeDFloorMode.cs
@@ -46,6 +46,7 @@ namespace CodeImp.DoomBuilder.ThreeDFloorMode
 			  RequiredMapFeatures = new[] { "Effect3DFloorSupport" },
 			  UseByDefault = true,
 			  SafeStartMode = false,
+			  Optional = false,
 			  Volatile = false)]
 
 	public class ThreeDFloorHelperMode : ClassicMode