diff --git a/src/main/java/de/rettichlp/ucutils/mixin/LivingEntityMixin.java b/src/main/java/de/rettichlp/ucutils/mixin/LocalPlayerMixin.java similarity index 62% rename from src/main/java/de/rettichlp/ucutils/mixin/LivingEntityMixin.java rename to src/main/java/de/rettichlp/ucutils/mixin/LocalPlayerMixin.java index 53c56e3a..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) ); - @Inject(method = "drop", at = @At("RETURN"), cancellable = true) - private void ucutils$dropHead(ItemStack itemStack, boolean randomly, boolean thrownFromHand, CallbackInfoReturnable cir) { + public LocalPlayerMixin(ClientLevel level, GameProfile gameProfile) { + super(level, gameProfile); + } + + @Inject(method = "drop", at = @At("HEAD"), cancellable = true) + private void ucutils$dropHead(boolean all, CallbackInfoReturnable cir) { if (!storage.isUnicaCity()) { return; } - if (cir.getReturnValue() == null) { - return; - } + ItemStack selectedItem = getInventory().getSelectedItem(); - if (player.getMainHandItem().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" ]