Skip to content

Commit

Permalink
test interaction times
Browse files Browse the repository at this point in the history
  • Loading branch information
AViewFromTheTop committed Aug 29, 2024
1 parent 4fe849a commit 78f83fd
Showing 1 changed file with 38 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
package net.frozenblock.trailiertales.mixin.common.coffin;

import java.util.Optional;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import net.frozenblock.trailiertales.block.entity.coffin.CoffinSpawner;
import net.frozenblock.trailiertales.block.entity.coffin.CoffinSpawnerData;
import net.frozenblock.trailiertales.block.entity.coffin.impl.EntityCoffinData;
import net.frozenblock.trailiertales.block.entity.coffin.impl.EntityCoffinInterface;
import net.frozenblock.trailiertales.registry.RegisterParticles;
import net.minecraft.advancements.critereon.EntityHurtPlayerTrigger;
import net.minecraft.advancements.critereon.PlayerHurtEntityTrigger;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.phys.Vec3;
Expand Down Expand Up @@ -44,6 +50,38 @@ public abstract class LivingEntityMixin implements EntityCoffinInterface {
this.trailierTales$entityCoffinData = entityCoffinData;
}

@WrapOperation(
method = "hurt",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/advancements/critereon/PlayerHurtEntityTrigger;trigger(Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/damagesource/DamageSource;FFZ)V"
)
)
public void trailierTales$onHurtByPlayer(
PlayerHurtEntityTrigger instance, ServerPlayer player, Entity entity, DamageSource damage, float dealt, float taken, boolean blocked, Operation<Void> original
) {
if (this.trailierTales$entityCoffinData != null) {
this.trailierTales$entityCoffinData.updateLastInteraction(entity.level().getGameTime());
}
original.call(instance, player, entity, damage, dealt, taken, blocked);
}

@WrapOperation(
method = "hurt",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/advancements/critereon/EntityHurtPlayerTrigger;trigger(Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/world/damagesource/DamageSource;FFZ)V"
)
)
public void trailierTales$onHurtPlayer(
EntityHurtPlayerTrigger instance, ServerPlayer player, DamageSource source, float dealt, float taken, boolean blocked, Operation<Void> original
) {
if (this.trailierTales$entityCoffinData != null) {
this.trailierTales$entityCoffinData.updateLastInteraction(LivingEntity.class.cast(this).level().getGameTime());
}
original.call(instance, player, source, dealt, taken, blocked);
}

@Inject(method = "remove", at = @At("HEAD"))
public void trailierTales$remove(Entity.RemovalReason reason, CallbackInfo info) {
if (reason == Entity.RemovalReason.KILLED && this.lastHurtByPlayerTime > 0) {
Expand Down

0 comments on commit 78f83fd

Please sign in to comment.