From 0f051cb4f7bbbd99927f7a7d5c3ae6946610fbe4 Mon Sep 17 00:00:00 2001 From: Fallen_Breath Date: Fri, 16 Apr 2021 10:58:51 +0800 Subject: [PATCH] Fixed #745 --- .../mixins/PlayerEntity_fakePlayersMixin.java | 28 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 1 + 2 files changed, 29 insertions(+) create mode 100644 src/main/java/carpet/mixins/PlayerEntity_fakePlayersMixin.java 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",