diff --git a/paper-server/patches/sources/net/minecraft/server/commands/RideCommand.java.patch b/paper-server/patches/sources/net/minecraft/server/commands/RideCommand.java.patch new file mode 100644 index 000000000..3e3691904 --- /dev/null +++ b/paper-server/patches/sources/net/minecraft/server/commands/RideCommand.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/server/commands/RideCommand.java ++++ b/net/minecraft/server/commands/RideCommand.java +@@ -58,7 +_,7 @@ + Entity vehicle1 = target.getVehicle(); + if (vehicle1 != null) { + throw ERROR_ALREADY_RIDING.create(target.getDisplayName(), vehicle1.getDisplayName()); +- } else if (vehicle.getType() == EntityType.PLAYER) { ++ } else if (vehicle.getType() == EntityType.PLAYER && !io.papermc.paper.configuration.GlobalConfiguration.get().commands.rideCommandAllowPlayerAsVehicle) { // Paper - allow player as vehicle + throw ERROR_MOUNTING_PLAYER.create(); + } else if (target.getSelfAndPassengers().anyMatch(passenger -> passenger == vehicle)) { + throw ERROR_MOUNTING_LOOP.create(); diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java index e3a7e6937..8b70a8e9b 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java @@ -12,7 +12,6 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ServerboundPlaceRecipePacket; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Items; import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.spongepowered.configurate.objectmapping.ConfigSerializable; @@ -202,6 +201,8 @@ public class GlobalConfiguration extends ConfigurationPart { public class Commands extends ConfigurationPart { public boolean suggestPlayerNamesWhenNullTabCompletions = true; public boolean timeCommandAffectsAllWorlds = false; + @Comment("Allow mounting entities to a player in the Vanilla '/ride' command.") + public boolean rideCommandAllowPlayerAsVehicle = false; } public Logging logging;