diff --git a/luminol-server/minecraft-patches/features/0053-Command-IllegalArgumentException-crash-fix.patch b/luminol-server/minecraft-patches/features/0053-Command-IllegalArgumentException-crash-fix.patch new file mode 100644 index 0000000..426c8b5 --- /dev/null +++ b/luminol-server/minecraft-patches/features/0053-Command-IllegalArgumentException-crash-fix.patch @@ -0,0 +1,52 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Helvetica Volubi +Date: Thu, 24 Apr 2025 20:59:52 +0800 +Subject: [PATCH] Command IllegalArgumentException crash fix + + +diff --git a/net/minecraft/server/commands/FillCommand.java b/net/minecraft/server/commands/FillCommand.java +index 89154adfc659afa188cd771e70087e3b1a9c98b9..e622f96e6e116bf491bbea39da099e02ceaee502 100644 +--- a/net/minecraft/server/commands/FillCommand.java ++++ b/net/minecraft/server/commands/FillCommand.java +@@ -210,6 +210,10 @@ public class FillCommand { + // Folia start - region threading + } catch (CommandSyntaxException ex) { + sendMessage(source, ex); ++ // Luminol Start - Server crash fix ++ } catch (IllegalArgumentException ex) { ++ net.minecraft.server.commands.SetBlockCommand.processIAE(source, ex); ++ // Luminol End - Server crash fix + } + }); return 0; // Folia end - region threading + } +diff --git a/net/minecraft/server/commands/SetBlockCommand.java b/net/minecraft/server/commands/SetBlockCommand.java +index 05b824409546ba8bacf7efdaeac106af89ff0715..55911d49c7650b344b46b2cfa9c4ae840ae433c8 100644 +--- a/net/minecraft/server/commands/SetBlockCommand.java ++++ b/net/minecraft/server/commands/SetBlockCommand.java +@@ -86,6 +86,15 @@ public class SetBlockCommand { + } + // Folia end - region threading + ++ // Luminol Start - Server crash fix ++ public static void processIAE(CommandSourceStack src, IllegalArgumentException ex) { ++ Component hoverText = Component.translatable("command.failed") ++ .withStyle(style -> style.withHoverEvent(new net.minecraft.network.chat.HoverEvent(net.minecraft.network.chat.HoverEvent.Action.SHOW_TEXT, Component.literal(ex.getMessage())))); ++ src.sendFailure(hoverText); ++ com.mojang.logging.LogUtils.getLogger().error(ex.getMessage(), ex); ++ } ++ // Luminol end - Server crash fix ++ + private static int setBlock( + CommandSourceStack source, BlockPos pos, BlockInput state, SetBlockCommand.Mode mode, @Nullable Predicate predicate + ) throws CommandSyntaxException { +@@ -119,6 +128,10 @@ public class SetBlockCommand { + // Folia start - region threading + } catch (CommandSyntaxException ex) { + sendMessage(source, ex); ++ // Luminol Start - Server crash fix ++ } catch (IllegalArgumentException ex) { ++ processIAE(source, ex); ++ // Luminol End - Server crash fix + } + }); + return 1;