From 039d516849fd405c0bf593d11f57a604d7968a94 Mon Sep 17 00:00:00 2001 From: Kevin <66999025+DAQEM@users.noreply.github.com> Date: Tue, 14 Oct 2025 02:10:57 +0200 Subject: [PATCH] fix: PlayerEvent.DROP_ITEM not working on Fabric 1.21.9 (#668) --- .../dev/architectury/mixin/fabric/MixinServerPlayer.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/fabric/src/main/java/dev/architectury/mixin/fabric/MixinServerPlayer.java b/fabric/src/main/java/dev/architectury/mixin/fabric/MixinServerPlayer.java index 82b44827..8ddbe756 100644 --- a/fabric/src/main/java/dev/architectury/mixin/fabric/MixinServerPlayer.java +++ b/fabric/src/main/java/dev/architectury/mixin/fabric/MixinServerPlayer.java @@ -25,6 +25,8 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -63,4 +65,11 @@ public class MixinServerPlayer { private void changeDimension(ServerLevel serverLevel, CallbackInfo ci) { PlayerEvent.CHANGE_DIMENSION.invoker().change((ServerPlayer) (Object) this, serverLevel.dimension(), ((ServerPlayer) (Object) this).level().dimension()); } + + @Inject(method = "drop(Lnet/minecraft/world/item/ItemStack;ZZ)Lnet/minecraft/world/entity/item/ItemEntity;", at = @At("RETURN"), cancellable = true) + private void dropItem(ItemStack itemStack, boolean bl, boolean bl2, CallbackInfoReturnable cir) { + if (cir.getReturnValue() != null && PlayerEvent.DROP_ITEM.invoker().drop((ServerPlayer) (Object) this, cir.getReturnValue()).isFalse()) { + cir.setReturnValue(null); + } + } }