- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 168
- Подписчиков на Modrinth
- 0
- версия
- 1
- Обновлён
- 28 марта 202628 мар.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
Ghosty 👻
Серверный настраиваемый Fabric-мод против EntityESP. Ghosty находится между трекером сущностей ванильного сервера и клиентом. Как только ванильный сервер начинает отслеживать сущность для игрока, Ghosty перехватывает и фильтрует сетевые пакеты (обновления). Он не даёт клиентам получать обновления о сущностях, которых они не должны видеть (например, за стенами или за спиной игрока), эффективно нейтрализуя читы Entity ESP и Wallhack.
Возможности
Ghosty применяет следующие проверки, чтобы определить, должна ли отслеживаемая сущность обновляться для клиента:
- Проверка дальности: Прекращает обновление отслеживаемых сущностей, находящихся за пределами настроенной дальности видимости.
- Проверка угла обзора: Не даёт обновлять сущности за пределами поля зрения игрока, если только они не находятся в крайней близости.
- Проверка перекрытия (рейкаст): Разумно блокирует обновления сущностей, если они полностью перекрыты непрозрачными блоками.
Настройка
Запустите сервер с установленным модом один раз, чтобы создать файл конфигурации по умолчанию по пути config/ghosty.json.
Конфигурация по умолчанию
{
"tracking": {
"range": {
"bypassFovCheckMaxDistance": 6.0,
"enterDistance": 8.0,
"exitDistance": 12.0
},
"fov": {
"enterAngle": 45.0,
"exitAngle": 60.0
},
"rayCastSamples": [
[0.5, 0.5, 0.5],
[0.1, 0.1, 0.1],
[0.9, 0.1, 0.1],
[0.1, 0.9, 0.9],
[0.9, 0.9, 0.9],
[0.5, 1.0, 0.5],
[0.5, 0.0, 0.5],
[0.5, 0.5, 0.1],
[0.5, 0.5, 0.9]
]
},
"shouldDespawn": false,
"cache": {
"forceRefreshNTicks": 5,
"byPlayer": {
"yawChangedThreshold": 10.0,
"pitchChangedThreshold": 10.0
},
"byTarget": {
"positionMovedThreshold": 1.0
}
}
}Руководство по настройке
| Ключ конфигурации | Описание |
|---|---|
bypassFovCheckMaxDistance | Абсолютный порог расстояния. Сущности в пределах этой дальности полностью обходят проверку угла обзора и всегда обновляются для клиента, если не перекрыты (предотвращает испуги при резком обороте). |
enterDistance | Порог расстояния, при котором скрытая сущность становится видимой (начинает обновляться для клиента). |
exitDistance | Порог расстояния, при котором видимая сущность становится скрытой (перестаёт обновляться для клиента). (Примечание: если exit больше enter, создаётся гистерезис, предотвращающий мерцание сущностей при ходьбе точно по границе). |
enterAngle | Порог угла обзора, при котором скрытая сущность становится видимой (начинает обновляться). |
exitAngle | Порог угла обзора, при котором видимая сущность становится скрытой (перестаёт обновляться). |
rayCastSamples | Матрица относительных координат, применяемых к хитбоксу сущности для проверки перекрытия. Увеличение количества точек повышает точность (например, позволяет заметить торчащее оружие), но требует больше циклов CPU. |
shouldDespawn | Должен ли сервер активно отправлять клиентам пакеты "Despawn", когда Ghosty перестаёт обновлять сущность. По умолчанию false. Примечание: Включение может привести к визуальным глюкам на стороне клиента, например, сбросу физики плаща или его взлёту вверх при появлении сущности. |
forceRefreshNTicks | Инвалидация кэша по времени. Пересчитывает видимость для всех отслеживаемых сущностей для каждого игрока каждые N тиков. |
yawChangedThreshold | Инвалидация кэша по вращению. Если yaw игрока (горизонтальный взгляд) изменяется больше чем на это значение, запускается пересчёт видимости. |
pitchChangedThreshold | Инвалидация кэша по вращению. Если pitch игрока (вертикальный взгляд) изменяется больше чем на это значение, запускается пересчёт видимости. |
positionMovedThreshold | Инвалидация кэша по позиции. Если целевая сущность переместилась дальше этого расстояния в квадрате с момента последней проверки, запускается пересчёт для отслеживающих её игроков. |
API для разработчиков (программируемые фильтры)
Ghosty предоставляет события, позволяющие другим модам подключаться к логике видимости и динамически её изменять.
Настройка
- Добавьте зависимость из JitPack, следуя инструкциям по адресу: https://jitpack.io/#lightsing/ghosty
- Импортируйте класс события:
me.lightsing.minecraft.ghosty.api.EntityVisibilityEvents - Зарегистрируйте свои слушатели событий для
EntityVisibilityEvents.PREи/илиEntityVisibilityEvents.POST.
EntityVisibilityEvents.PRE
Это событие вызывается до любых внутренних проверок Ghosty (дальность, угол обзора, перекрытие). Оно крайне полезно для добавления в белый список конкретных сущностей (например, питомцев, светящихся сущностей или боссов), которые всегда должны отрисовываться у клиента, как только ванильный трекер их обнаружит.
Сигнатура:
(ServerPlayer player, Entity target) -> InteractionResult
- Верните
InteractionResult.FAIL, чтобы пропустить все последующие проверки Ghosty и принудительно обновить сущность для клиента.- Верните
InteractionResult.PASS, чтобы ничего не делать и позволить Ghosty (или другим хукам) обработать видимость обычным образом.
EntityVisibilityEvents.POSTЭто событие вызывается после завершения всех внутренних проверок и содержит окончательное решение Ghosty о видимости. Это позволяет изменять поведение обновления на месте до того, как пакеты будут перехвачены или отправлены. Сигнатура:
(EntityVisibilityCheckEvent event) -> InteractionResult
- Верните любое значение, кроме
InteractionResult.PASS, чтобы перехватить событие и остановить его распространение к другим зарегистрированным POST-хукам.
Частые вопросы
Как установить ghosty?
Установите Fabric под свою версию Minecraft, скачайте ghosty под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть ghosty?
У ghosty есть сборки для Minecraft 1.21.1.
Нужен ли ghosty на сервере?
Ставится только на сервер; игрокам ставить не нужно