diff --git a/src/main/java/carpet/mixins/PlayerEntity_fakePlayersMixin.java b/src/main/java/carpet/mixins/PlayerEntity_fakePlayersMixin.java new file mode 100644 index 00000000..915557c8 --- /dev/null +++ b/src/main/java/carpet/mixins/PlayerEntity_fakePlayersMixin.java @@ -0,0 +1,28 @@ +package carpet.mixins; + +import carpet.patches.EntityPlayerMPFake; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(PlayerEntity.class) +public abstract class PlayerEntity_fakePlayersMixin +{ + /** + * To make sure player attacks are able to knockback fake players + */ + @Redirect( + method = "attack", + at = @At( + value = "FIELD", + target = "Lnet/minecraft/entity/Entity;velocityModified:Z", + ordinal = 0 + ) + ) + private boolean velocityModifiedAndNotCarpetFakePlayer(Entity target) + { + return target.velocityModified && !(target instanceof EntityPlayerMPFake); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 0d18197f..724b8cf7 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -61,6 +61,7 @@ "Brain_Mixin", "Memory_scarpetMixin", + "PlayerEntity_fakePlayersMixin", "ServerWorld_fakePlayersMixin", "ThrownEnderpearlEntity_fakePlayersMixin",