Entity Glow / Wallhack ESP Mixin
Влияние на механику Minecraft
В Minecraft эффект свечения (Glowing) подсвечивает контур сущности цветной обводкой, которая видна сквозь непрозрачные блоки и препятствия. В ванильной игре этот эффект выдается сервером строго по игровым правилам — например, при попадании спектральной стрелы или наложении соответствующего зелья.
Glow_Mixin_Override обнаруживает модификации, перехватывающие метод Entity.isGlowing() (method_5851) через Mixin. В модификации FriendHighlight (net.maksaidev.friendhighlight.mixin.EntityGlowMixin) аннотация @Inject внедряется в начало метода isGlowing с параметром cancellable = true. Если сущность является игроком (class_742), код проверяет его наличие в списке друзей FriendManager.isFriend(name). При совпадении метод вызывает cir.setReturnValue(true).
Принудительный возврат true заставляет клиент отрисовывать контур сквозь стены. Несмотря на то, что в данном образце функционал ориентирован на утилитарную подсветку союзников, абсолютно аналогичный байткод-шаблон используется в читах класса Wallhack / ESP для обнаружения любых противников на PvP-серверах.
Анализируемые функции и API
Entity.isGlowing / method_5851
Ванильный предикат сущности, определяющий отображение светящегося силуэта сквозь препятствия (method_5851).
@Inject / @ModifyReturnValue (Mixin)
Аннотации Mixin для внедрения логики в Entity.isGlowing с принудительным возвратом значения true.
Декомпилированный вид (Vineflower)
@Inject(method = "isGlowing", at = @At("HEAD"), cancellable = true)
private void friendhighlight$forceGlowForFriends(CallbackInfoReturnable<Boolean> cir) {
class_1297 self = (class_1297)this;
if (self instanceof class_742 clientPlayer) {
String name = clientPlayer.method_7334().getName();
if (FriendManager.isFriend(name)) {
cir.setReturnValue(true);
}
}
}
Сигнатура байткода и статический детект
Детектор анализирует аннотации методов, выявляя точки внедрения Mixin (@Inject, @ModifyReturnValue или @ModifyExpressionValue), нацеленные на предикаты свечения сущностей:
- Методы Intermediary:
method_5851(isGlowing) иmethod_27022(hasOutline). - Именованные методы движка и Forge:
isGlowing,shouldGlow,isCurrentlyGlowing,hasOutlineилиfunc_184195_f.
Правило фиксирует вмешательство в статус свечения сущностей на уровне байткода. Следует учитывать, что правило реагирует на любую инъекцию в isGlowing, включая как агрессивные читы (Wallhack / ESP на всех игроков), так и утилитарные модификации (например, подсветку союзников). Если отрисовка контуров реализована через кастомные шейдеры OpenGL/VBO без модификации isGlowing, данная сигнатура не сработает.