--- a/net/minecraft/server/commands/GameModeCommand.java +++ b/net/minecraft/server/commands/GameModeCommand.java @@ -69,9 +_,16 @@ } private static boolean setGameMode(CommandSourceStack source, ServerPlayer player, GameType gameMode) { - if (player.setGameMode(gameMode)) { + // Paper start + org.bukkit.event.player.PlayerGameModeChangeEvent event = player.setGameMode(gameMode, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.COMMAND, net.kyori.adventure.text.Component.empty()); + if (event != null && !event.isCancelled()) { + // Paper end logGamemodeChange(source, player, gameMode); return true; + } else if (event != null && event.cancelMessage() != null) { + source.sendSuccess(() -> io.papermc.paper.adventure.PaperAdventure.asVanilla(event.cancelMessage()), true); + return false; + // Paper end - Expand PlayerGameModeChangeEvent } else { return false; }