From 58af7aaa4b89537af7238644ba03ab3fec2f0c1f Mon Sep 17 00:00:00 2001 From: TropheusJ Date: Thu, 20 Feb 2025 09:37:21 -0500 Subject: [PATCH] fix players picking up items in contraption bounds when seated --- .../create/foundation/mixin/PlayerMixin.java | 35 +++++++++++++++++++ src/main/resources/create.mixins.json | 1 + 2 files changed, 36 insertions(+) create mode 100644 src/main/java/com/simibubi/create/foundation/mixin/PlayerMixin.java diff --git a/src/main/java/com/simibubi/create/foundation/mixin/PlayerMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/PlayerMixin.java new file mode 100644 index 0000000000..4eec0a0956 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/PlayerMixin.java @@ -0,0 +1,35 @@ +package com.simibubi.create.foundation.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.simibubi.create.content.contraptions.AbstractContraptionEntity; + +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; + +@Mixin(Player.class) +public abstract class PlayerMixin extends LivingEntity { + protected PlayerMixin(EntityType entityType, Level level) { + super(entityType, level); + } + + @ModifyExpressionValue( + method = "aiStep", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/entity/player/Player;isPassenger()Z" + ) + ) + private boolean pretendNotPassenger(boolean isPassenger) { + // avoid touching all items in the contraption's massive hitbox + if (isPassenger && this.getVehicle() instanceof AbstractContraptionEntity) { + return false; + } + + return isPassenger; + } +} diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index 3875fad8e2..feee74ca39 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -16,6 +16,7 @@ "LavaSwimmingMixin", "LootingEnchantFunctionMixin", "MapItemSavedDataMixin", + "PlayerMixin", "ProjectileUtilMixin", "ShulkerBoxBlockMixin", "SmithingMenuMixin",