Merge branch '1.20.1' into 1.20.2

This commit is contained in:
Sollace 2024-06-24 01:25:40 +01:00
commit cc8bc28432
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
4 changed files with 24 additions and 16 deletions

View file

@ -18,7 +18,7 @@ import net.minecraft.util.math.Vec3d;
abstract class MixinAbstractSkeletonEntity extends HostileEntity {
MixinAbstractSkeletonEntity() { super(null, null); }
@ModifyArg(method = "attack", at = @At(value = "INVOKE", target = "net/minecraft/world/World.spawnEntity(Lnet/minecraft/entity/Entity;)Z"))
@ModifyArg(method = "shootAt(Lnet/minecraft/entity/LivingEntity;F)V", at = @At(value = "INVOKE", target = "net/minecraft/world/World.spawnEntity(Lnet/minecraft/entity/Entity;)Z"))
private Entity modifyAccuracy(Entity entity) {
if (entity instanceof PersistentProjectileEntity projectile && getTarget() instanceof PlayerEntity player && Pony.of(player).getPhysics().isFlying()) {
Vec3d targetPos = TargettingUtil.getProjectedPos(player)

View file

@ -5,7 +5,9 @@ import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import com.minelittlepony.unicopia.entity.effect.SeaponyGraceStatusEffect;
import net.minecraft.entity.LivingEntity;
@ -16,8 +18,10 @@ abstract class MixinGuardianTargetPredicate {
@Shadow
private @Final GuardianEntity owner;
@ModifyReturnValue(method = "test", at = @At("RETURN"))
private boolean unicopia_excludeSeaponysGrace(boolean result, @Nullable LivingEntity target) {
return result && SeaponyGraceStatusEffect.hasIre(target, owner);
@Inject(method = "test", at = @At("HEAD"), cancellable = true)
private void unicopia_excludeSeaponysGrace(@Nullable LivingEntity target, CallbackInfoReturnable<Boolean> info) {
if (!SeaponyGraceStatusEffect.hasIre(target, owner)) {
info.setReturnValue(false);
}
}
}

View file

@ -2,7 +2,9 @@ package com.minelittlepony.unicopia.mixin;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import com.minelittlepony.unicopia.entity.effect.SeaponyGraceStatusEffect;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.passive.FishEntity;
@ -12,8 +14,10 @@ import net.minecraft.entity.passive.PufferfishEntity;
abstract class MixinPufferfishEntity extends FishEntity {
MixinPufferfishEntity() { super(null, null); }
@ModifyReturnValue(method = "method_6591(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("RETURN"))
private static boolean unicopia_excludeSeaponysGrace(boolean result, LivingEntity entity) {
return result && !SeaponyGraceStatusEffect.hasGrace(entity);
@Inject(method = "method_6591(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("HEAD"), cancellable = true)
private static void unicopia_excludeSeaponysGrace(LivingEntity entity, CallbackInfoReturnable<Boolean> info) {
if (SeaponyGraceStatusEffect.hasGrace(entity)) {
info.setReturnValue(false);
}
}
}

View file

@ -1,7 +1,6 @@
package com.minelittlepony.unicopia.mixin.client;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@ -15,7 +14,7 @@ import com.minelittlepony.unicopia.entity.behaviour.EntityAppearance;
import com.minelittlepony.unicopia.entity.player.Pony;
import com.minelittlepony.unicopia.network.track.Trackable;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientCommonNetworkHandler;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.world.ClientWorld;
@ -23,10 +22,14 @@ import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket;
import net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket;
@Mixin(ClientPlayNetworkHandler.class)
abstract class MixinClientPlayNetworkHandler {
@Shadow private @Final MinecraftClient client;
abstract class MixinClientPlayNetworkHandler extends ClientCommonNetworkHandler {
protected MixinClientPlayNetworkHandler() { super(null, null, null); }
@Shadow private ClientWorld world;
@Nullable
private ClientPlayerEntity oldPlayer;
@Inject(method = "onEntityStatus", at = @At("TAIL"))
private void onOnEntityStatus(EntityStatusS2CPacket packet, CallbackInfo info) {
Living<?> living = Living.living(packet.getEntity(world));
@ -41,9 +44,6 @@ abstract class MixinClientPlayNetworkHandler {
}
}
@Nullable
private ClientPlayerEntity oldPlayer;
@Inject(method = "onPlayerRespawn", at = @At("HEAD"))
public void beforeOnPlayerRespawn(PlayerRespawnS2CPacket packet, CallbackInfo info) {
oldPlayer = client.player;