diff --git a/src/main/java/de/teamlapen/vampirism/mixin/MixinPlayerEntity.java b/src/main/java/de/teamlapen/vampirism/mixin/MixinPlayerEntity.java index 641b57f651..d2aa15ffee 100644 --- a/src/main/java/de/teamlapen/vampirism/mixin/MixinPlayerEntity.java +++ b/src/main/java/de/teamlapen/vampirism/mixin/MixinPlayerEntity.java @@ -1,9 +1,10 @@ package de.teamlapen.vampirism.mixin; +import de.teamlapen.vampirism.api.entity.factions.IFaction; +import de.teamlapen.vampirism.api.items.IFactionExclusiveItem; import de.teamlapen.vampirism.api.items.IVampirismCrossbow; import de.teamlapen.vampirism.entity.player.IVampirismPlayer; import de.teamlapen.vampirism.entity.player.VampirismPlayerAttributes; -import de.teamlapen.vampirism.items.crossbow.VampirismCrossbowItem; import de.teamlapen.vampirism.util.MixinHooks; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; @@ -18,6 +19,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.function.Predicate; @@ -55,4 +57,14 @@ private Predicate getAllSupportedProjectilesWithItemStack(ProjectileW } return instance.getSupportedHeldProjectiles(); } + + @Inject(method = "canTakeItem", at = @At("HEAD"), cancellable = true) + private void canTakeItem(ItemStack stack, CallbackInfoReturnable cir) { + if (stack.getItem() instanceof IFactionExclusiveItem item) { + IFaction exclusiveFaction = item.getExclusiveFaction(stack); + if (exclusiveFaction != null && exclusiveFaction != this.vampirismPlayerAttributes.faction) { + cir.setReturnValue(false); + } + } + } }