From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MrHua269 Date: Tue, 11 Feb 2025 13:34:47 +0800 Subject: [PATCH] Fix uncorrected death check of folia In the new mc version, mojang changed some checks in A.C.M(AbstractContainerMenu) and there is a new death check of player which will be executed when player dead.But on folia, player entity cannot be discarded unless they disconnected from the server, so there is an obvious bug that when player dead, the logic depend on that dead check will not be executed correctly because the check logic is still asserting the player is alive by checking if the player is discarded, which caused some exploits can save items in the crafting slots(with InventoryTweaks turned on in meteor client) when keepInventory is set to false diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java index d2a570e559150d8bc8a1ba68d8ce57b2bababab9..39a6e3eb7e515060cd35c3d78ff7ba74e159588d 100644 --- a/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -716,7 +716,7 @@ public abstract class AbstractContainerMenu { } private static void dropOrPlaceInInventory(Player player, ItemStack stack) { - boolean flag = player.isRemoved() && player.getRemovalReason() != Entity.RemovalReason.CHANGED_DIMENSION; + boolean flag = !player.isAlive(); //player.isRemoved() && player.getRemovalReason() != Entity.RemovalReason.CHANGED_DIMENSION; // Luminol - Fix uncorrected death check of folia boolean flag1 = player instanceof ServerPlayer serverPlayer && serverPlayer.hasDisconnected(); if (flag || flag1) { player.drop(stack, false);