Detached Free Camera (Freecam / FreeLook)

Freecam_Camera_Detached Рендер / ESP HIGH +7 очков

🎮 Влияние на механику Minecraft

В Minecraft точка обзора игрока жестко привязана к сущности персонажа. На каждом кадре метод Camera.update() обновляет положение и углы поворота камеры на основе координат игрока, высоты глаз и направления взгляда, а метод clipToSpace() предотвращает прохождение камеры сквозь блоки в режиме от третьего лица.

Freecam_Camera_Detached выявляет модификации, внедряющиеся в Camera (class_4184) для отвязки камеры от тела персонажа. В исследованном чит-клиенте (com.larpclient.mixin.CameraFreecamMixin) аннотация @Inject встраивается в конец метода Camera.update() (method_19321). При активном модуле FreecamModule миксин перезаписывает ориентацию камеры через this.method_19325(yaw, pitch) и координаты через this.method_19322(pos).

Это позволяет игроку свободно перемещать бесплотную камеру сквозь непрозрачные стены и блоки для разведки баз, тайников и подземных пещер, в то время как физическое тело персонажа остается неподвижным на сервере.

🔍 Анализируемые функции и API

@Mixin(Camera.class / class_4184)

Внедрение Mixin в класс камеры Minecraft (net.minecraft.class_4184).

Camera.setRotation / method_19325

Принудительно задает углы наклона и поворота камеры независимо от взгляда игрока (method_19325).

Camera.setPos / method_19322

Задает координаты камеры в пространстве, позволяя точке обзора перемещаться сквозь блоки (method_19322).

⚙️ Декомпилированный вид (Vineflower)

@Inject(method = "method_19321", at = @At("TAIL"))
private void larpclient$freecam(class_1937 level, class_1297 entity, boolean detached, boolean thirdPersonReverse, float partialTick, CallbackInfo ci) {
   FreecamModule freecam = FreecamModule.get();
   if (freecam != null && freecam.isActive()) {
      this.method_19325(freecam.getInterpolatedYaw(partialTick), freecam.getInterpolatedPitch(partialTick));
      this.method_19322(freecam.getInterpolatedPos(partialTick));
   }
}

🛡️ Сигнатура байткода и статический детект

Детектор анализирует аннотации класса и вызовы методов, требуя одновременного выполнения двух условий:

  • Аннотацию @Mixin, нацеленную на класс камеры: net.minecraft.client.render.Camera или Intermediary net.minecraft.class_4184.
  • Вызов методов манипуляции камерой: setPos (Intermediary method_19322 или method_19325), setRotation (Intermediary method_19325 или method_19327) или метода проверки коллизий со стенами clipToSpace (method_19318).

Правило выявляет вмешательство в класс камеры на уровне движка. Если свободный обзор реализован без изменения класса Camera (например, через переключение точки обзора на фейковую сущность-наблюдателя с помощью ванильного вызова MinecraftClient.setCameraEntity()), данная сигнатура не сработает.