From 5a6ab97be6bdc8231582e15112c7a847a8800549 Mon Sep 17 00:00:00 2001 From: Shane Bee Date: Sun, 23 Mar 2025 16:55:15 -0700 Subject: [PATCH] Add config to remove player as vehicle restriction in /ride (#12327) --- .../minecraft/server/commands/RideCommand.java.patch | 11 +++++++++++ .../paper/configuration/GlobalConfiguration.java | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 paper-server/patches/sources/net/minecraft/server/commands/RideCommand.java.patch 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 0000000000..3e36919047 --- /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 e3a7e69371..8b70a8e9b0 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;