diff --git a/src/main/java/me/drex/vanish/config/VanishConfig.java b/src/main/java/me/drex/vanish/config/VanishConfig.java index 8e6f6fd..91fa6bf 100644 --- a/src/main/java/me/drex/vanish/config/VanishConfig.java +++ b/src/main/java/me/drex/vanish/config/VanishConfig.java @@ -48,7 +48,7 @@ public static class Interaction { @Comment("Prevent entity collisions") public boolean entityCollisions = true; - @Comment("Prevent entity pickups (arrows, experience orbs, items and tridents)") + @Comment("Prevent entity pickups (arrows, experience orbs, items, dropper equipping and tridents)") public boolean entityPickup = true; @Comment("Prevent progressing advancements") diff --git a/src/main/java/me/drex/vanish/mixin/interaction/LivingEntityMixin.java b/src/main/java/me/drex/vanish/mixin/interaction/LivingEntityMixin.java index c1e2f96..04b67c6 100644 --- a/src/main/java/me/drex/vanish/mixin/interaction/LivingEntityMixin.java +++ b/src/main/java/me/drex/vanish/mixin/interaction/LivingEntityMixin.java @@ -2,12 +2,16 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import me.drex.vanish.VanishMod; import me.drex.vanish.api.VanishAPI; import me.drex.vanish.config.ConfigManager; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import java.util.function.Predicate; + @Mixin(LivingEntity.class) public abstract class LivingEntityMixin { @@ -22,5 +26,16 @@ public boolean vanish_preventPushing(LivingEntity entity, Operation ori return original.call(entity) || (ConfigManager.vanish().interaction.entityCollisions && VanishAPI.isVanished(entity)); } + @WrapOperation( + method = "canEquipWithDispenser", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/entity/LivingEntity;isSpectator()Z" + ) + ) + public boolean vanish_preventArmorItemEquip(LivingEntity entity, Operation original) { + return original.call(entity) || (ConfigManager.vanish().interaction.entityPickup && VanishAPI.isVanished(entity)); + } + } diff --git a/src/main/java/me/drex/vanish/mixin/interaction/VanishEntitySelector.java b/src/main/java/me/drex/vanish/mixin/interaction/VanishEntitySelector.java index fc15bb3..6782674 100644 --- a/src/main/java/me/drex/vanish/mixin/interaction/VanishEntitySelector.java +++ b/src/main/java/me/drex/vanish/mixin/interaction/VanishEntitySelector.java @@ -11,7 +11,6 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.vehicle.NewMinecartBehavior; import net.minecraft.world.entity.vehicle.OldMinecartBehavior; -import net.minecraft.world.item.ArmorItem; import net.minecraft.world.level.EntityGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BasePressurePlateBlock; @@ -71,21 +70,6 @@ private static Predicate vanish_preventEntityCollision(Operation vanish_preventArmorItemEquip(Operation> original) { - return ConfigManager.vanish().interaction.entityPickup ? VanishMod.NO_SPECTATORS_AND_NO_VANISH : original.call(); - } - } - @Mixin(OldMinecartBehavior.class) public abstract static class OldMinecartBehaviorMixin { @WrapOperation( diff --git a/src/main/resources/vanish.mixins.json b/src/main/resources/vanish.mixins.json index 1b0f387..665c57b 100644 --- a/src/main/resources/vanish.mixins.json +++ b/src/main/resources/vanish.mixins.json @@ -39,7 +39,6 @@ "interaction.PlayerMixin", "interaction.SimpleCriterionTriggerMixin", "interaction.StepOnBlockMixin", - "interaction.VanishEntitySelector$ArmorItemMixin", "interaction.VanishEntitySelector$BasePressurePlateBlockMixin", "interaction.VanishEntitySelector$BeehiveBlockMixin", "interaction.VanishEntitySelector$EntityGetterMixin",