Files
RustNotMC/rsx-plugin-api/src/main/java/net/rustnotmc/api/server/Hitboxes.java
T
sasheg dev 9980c1561d Игрок: хитбокс 1.45 в шифте и прыжок с места 1.5
- RsxPlayerTuning: высота при подкрадывании 1.45 (ванилла 1.65), прыжок с
  места 1.5, в движении ванильные 1.25, высота глаз в шифте 1.37.
- RsxPlayer: прыжок по наличию горизонтального ввода, глаза при подкрадывании.
- Патч в EntityPlayer.updateSize: высота при подкрадывании из нашего класса.
- Импульс прыжка считается обратным счетом по физике ваниллы.

AABB: редактор хитбоксов и их отрисовка

- Протокол: Hitbox (имя, зона, min/max, поворот), пакеты Hitboxes,
  HitboxInstances и HitboxesReload.
- Сервер: HitboxRegistry читает JSON-файл (world/hitboxes.json, можно
  указать --hitboxes), перечитывает его по запросу клиента и шлет наборы
  игрокам. Сломанный файл не стирает рабочие коробки, а объясняет причину.
- Клиент: RsxHitboxDebug рисует коробки через RenderGlobal.drawBoundingBox
  с подписями DebugRenderer, красит зоны (голова красная, тело желтое, ноги
  синие). Команды: /rsx hitboxes on|off|reload|list|show NAME.
- Новый модуль rsx-plugin-api с интерфейсом Hitboxes: плагин может
  зарегистрировать свои коробки. У сервера появился скрипт сборки.

Тесты: протокол 34, сервер 80 (было 74). Форк собирается чисто, 3279 классов.
2026-10-21 22:31:16 +03:00

31 lines
833 B
Java

package net.rustnotmc.api.server;
import net.rustnotmc.protocol.Hitbox;
/**
* The boxes of the models, on the server.
*
* A plugin that brings its own object says where its boxes are, and the game
* uses them: for the collision, for the damage, and for the drawing that the
* editor does.
*
* The boxes of our own models are in a file that the server reads, so that
* they can be changed without touching any code.
*/
public interface Hitboxes {
/**
* Says where the boxes of a model are.
*
* A model that is already known is replaced, so a plugin may take a
* model over.
*/
void register(String model, Hitbox[] boxes);
/** The boxes of a model, or null when it has none. */
Hitbox[] of(String model);
/** True when the model has boxes. */
boolean has(String model);
}