From 4057aa5144db1d760e151c7fb0d7dcf848f27abf Mon Sep 17 00:00:00 2001 From: RettichLP Date: Fri, 10 Jul 2026 10:08:01 +0200 Subject: [PATCH 1/2] Update LivingEntityMixin to adjust injection timing and fix item condition check --- .../java/de/rettichlp/ucutils/mixin/LivingEntityMixin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/rettichlp/ucutils/mixin/LivingEntityMixin.java b/src/main/java/de/rettichlp/ucutils/mixin/LivingEntityMixin.java index 53c56e3a..84b675bd 100644 --- a/src/main/java/de/rettichlp/ucutils/mixin/LivingEntityMixin.java +++ b/src/main/java/de/rettichlp/ucutils/mixin/LivingEntityMixin.java @@ -26,7 +26,7 @@ public abstract class LivingEntityMixin { new Vec3(1027, 69, 275) ); - @Inject(method = "drop", at = @At("RETURN"), cancellable = true) + @Inject(method = "drop", at = @At("HEAD"), cancellable = true) private void ucutils$dropHead(ItemStack itemStack, boolean randomly, boolean thrownFromHand, CallbackInfoReturnable cir) { if (!storage.isUnicaCity()) { return; @@ -36,7 +36,7 @@ public abstract class LivingEntityMixin { return; } - if (player.getMainHandItem().is(GLASS_BOTTLE) && isNearShop()) { + if (itemStack.is(GLASS_BOTTLE) && isNearShop()) { // cancel drop cir.setReturnValue(null); From 493d6d0526ee7926b8915236dc09c3a962afdc17 Mon Sep 17 00:00:00 2001 From: RettichLP Date: Fri, 10 Jul 2026 11:01:58 +0200 Subject: [PATCH 2/2] Refactor LivingEntityMixin to LocalPlayerMixin and update drop method logic --- ...EntityMixin.java => LocalPlayerMixin.java} | 24 +++++++++++-------- src/main/resources/ucutils.mixins.json | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) rename src/main/java/de/rettichlp/ucutils/mixin/{LivingEntityMixin.java => LocalPlayerMixin.java} (66%) diff --git a/src/main/java/de/rettichlp/ucutils/mixin/LivingEntityMixin.java b/src/main/java/de/rettichlp/ucutils/mixin/LocalPlayerMixin.java similarity index 66% rename from src/main/java/de/rettichlp/ucutils/mixin/LivingEntityMixin.java rename to src/main/java/de/rettichlp/ucutils/mixin/LocalPlayerMixin.java index 84b675bd..b569f8f3 100644 --- a/src/main/java/de/rettichlp/ucutils/mixin/LivingEntityMixin.java +++ b/src/main/java/de/rettichlp/ucutils/mixin/LocalPlayerMixin.java @@ -1,7 +1,9 @@ package de.rettichlp.ucutils.mixin; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.item.ItemEntity; +import com.mojang.authlib.GameProfile; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; @@ -17,8 +19,8 @@ import static de.rettichlp.ucutils.UCUtils.storage; import static net.minecraft.world.item.Items.GLASS_BOTTLE; -@Mixin(LivingEntity.class) -public abstract class LivingEntityMixin { +@Mixin(LocalPlayer.class) +public class LocalPlayerMixin extends AbstractClientPlayer { @Unique private final static List SHOP_LOCATIONS = List.of( @@ -26,19 +28,21 @@ public abstract class LivingEntityMixin { new Vec3(1027, 69, 275) ); + public LocalPlayerMixin(ClientLevel level, GameProfile gameProfile) { + super(level, gameProfile); + } + @Inject(method = "drop", at = @At("HEAD"), cancellable = true) - private void ucutils$dropHead(ItemStack itemStack, boolean randomly, boolean thrownFromHand, CallbackInfoReturnable cir) { + private void ucutils$dropHead(boolean all, CallbackInfoReturnable cir) { if (!storage.isUnicaCity()) { return; } - if (cir.getReturnValue() == null) { - return; - } + ItemStack selectedItem = getInventory().getSelectedItem(); - if (itemStack.is(GLASS_BOTTLE) && isNearShop()) { + if (selectedItem.is(GLASS_BOTTLE) && isNearShop()) { // cancel drop - cir.setReturnValue(null); + cir.cancel(); // execute command commandService.sendCommand("sell pfand"); diff --git a/src/main/resources/ucutils.mixins.json b/src/main/resources/ucutils.mixins.json index 192ff260..c3bc0cb1 100644 --- a/src/main/resources/ucutils.mixins.json +++ b/src/main/resources/ucutils.mixins.json @@ -22,7 +22,7 @@ "EntityHitboxDebugRendererMixin", "EntityRendererMixin", "GuiMixin", - "LivingEntityMixin", + "LocalPlayerMixin", "PauseScreenMixin", "PlayerTabOverlayMixin" ]