package com.owlmaddie.mixin; import com.owlmaddie.chat.ChatDataManager; import com.owlmaddie.chat.EntityChatData; import net.minecraft.entity.mob.VexEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; /** * Mixin to modify Vex behavior by setting `alive = false` if chat data exists. */ @Mixin(VexEntity.class) public abstract class MixinVexEntity { @Shadow private boolean alive; @Inject(method = "tick", at = @At("HEAD")) private void disableVexIfChatData(CallbackInfo ci) { VexEntity vex = (VexEntity) (Object) this; // Get chat data for this Vex EntityChatData chatData = ChatDataManager.getServerInstance().getOrCreateChatData(vex.getUuidAsString()); if (this.alive && !chatData.characterSheet.isEmpty()) { this.alive = false; // Prevents the Vex from ticking and taking damage } } }