From 21b581fdbdbbf9c392229a4d9b3a9c23769ad9e7 Mon Sep 17 00:00:00 2001 From: u32 Date: Mon, 28 Apr 2025 04:14:56 +0100 Subject: [PATCH 1/2] Fix logging of dropped items (resolves QuiltServerTools/Ledger#320) --- .../mixin/entities/PlayerEntityMixin.java | 22 +++++++++++++++++++ .../entities/ServerPlayerEntityMixin.java | 5 +++-- src/main/resources/ledger.mixins.json | 1 + 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/github/quiltservertools/ledger/mixin/entities/PlayerEntityMixin.java diff --git a/src/main/java/com/github/quiltservertools/ledger/mixin/entities/PlayerEntityMixin.java b/src/main/java/com/github/quiltservertools/ledger/mixin/entities/PlayerEntityMixin.java new file mode 100644 index 00000000..85fcbddd --- /dev/null +++ b/src/main/java/com/github/quiltservertools/ledger/mixin/entities/PlayerEntityMixin.java @@ -0,0 +1,22 @@ +package com.github.quiltservertools.ledger.mixin.entities; + +import com.github.quiltservertools.ledger.callbacks.ItemDropCallback; +import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(PlayerEntity.class) +public abstract class PlayerEntityMixin { + @Inject(method = "dropItem", at = @At("RETURN")) + private void logPlayerItemDrop(ItemStack stack, boolean retainOwnership, CallbackInfoReturnable cir) { + PlayerEntity player = (PlayerEntity) (Object) this; + var itemEntity = cir.getReturnValue(); + if (itemEntity != null) { + ItemDropCallback.EVENT.invoker().drop(itemEntity, player); + } + } +} diff --git a/src/main/java/com/github/quiltservertools/ledger/mixin/entities/ServerPlayerEntityMixin.java b/src/main/java/com/github/quiltservertools/ledger/mixin/entities/ServerPlayerEntityMixin.java index e6882572..3d00a334 100644 --- a/src/main/java/com/github/quiltservertools/ledger/mixin/entities/ServerPlayerEntityMixin.java +++ b/src/main/java/com/github/quiltservertools/ledger/mixin/entities/ServerPlayerEntityMixin.java @@ -4,15 +4,16 @@ import net.minecraft.entity.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.server.network.ServerPlayerEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(PlayerEntity.class) +@Mixin(ServerPlayerEntity.class) public abstract class ServerPlayerEntityMixin { @Inject(method = "dropItem", at = @At("RETURN")) - private void logPlayerItemDrop(ItemStack stack, boolean retainOwnership, CallbackInfoReturnable cir) { + private void logPlayerItemDrop(ItemStack stack, boolean dropAtSelf, boolean retainOwnership, CallbackInfoReturnable cir) { PlayerEntity player = (PlayerEntity) (Object) this; var itemEntity = cir.getReturnValue(); if (itemEntity != null) { diff --git a/src/main/resources/ledger.mixins.json b/src/main/resources/ledger.mixins.json index 8ef7ceca..c62410b1 100644 --- a/src/main/resources/ledger.mixins.json +++ b/src/main/resources/ledger.mixins.json @@ -89,6 +89,7 @@ "entities.LightningEntityMixin", "entities.LivingEntityMixin", "entities.MobEntityMixin", + "entities.PlayerEntityMixin", "entities.RavagerEntityMixin", "entities.ServerPlayerEntityMixin", "entities.SheepEntityMixin", From 4e2fa8b1646300f7fff33f770886f9a0f06d3f65 Mon Sep 17 00:00:00 2001 From: u32 Date: Tue, 29 Apr 2025 21:15:50 +0100 Subject: [PATCH 2/2] Remove PlayerEntityMixin --- .../mixin/entities/PlayerEntityMixin.java | 22 ------------------- src/main/resources/ledger.mixins.json | 1 - 2 files changed, 23 deletions(-) delete mode 100644 src/main/java/com/github/quiltservertools/ledger/mixin/entities/PlayerEntityMixin.java diff --git a/src/main/java/com/github/quiltservertools/ledger/mixin/entities/PlayerEntityMixin.java b/src/main/java/com/github/quiltservertools/ledger/mixin/entities/PlayerEntityMixin.java deleted file mode 100644 index 85fcbddd..00000000 --- a/src/main/java/com/github/quiltservertools/ledger/mixin/entities/PlayerEntityMixin.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.github.quiltservertools.ledger.mixin.entities; - -import com.github.quiltservertools.ledger.callbacks.ItemDropCallback; -import net.minecraft.entity.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(PlayerEntity.class) -public abstract class PlayerEntityMixin { - @Inject(method = "dropItem", at = @At("RETURN")) - private void logPlayerItemDrop(ItemStack stack, boolean retainOwnership, CallbackInfoReturnable cir) { - PlayerEntity player = (PlayerEntity) (Object) this; - var itemEntity = cir.getReturnValue(); - if (itemEntity != null) { - ItemDropCallback.EVENT.invoker().drop(itemEntity, player); - } - } -} diff --git a/src/main/resources/ledger.mixins.json b/src/main/resources/ledger.mixins.json index c62410b1..8ef7ceca 100644 --- a/src/main/resources/ledger.mixins.json +++ b/src/main/resources/ledger.mixins.json @@ -89,7 +89,6 @@ "entities.LightningEntityMixin", "entities.LivingEntityMixin", "entities.MobEntityMixin", - "entities.PlayerEntityMixin", "entities.RavagerEntityMixin", "entities.ServerPlayerEntityMixin", "entities.SheepEntityMixin",