/*
 * Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
 * by the Epic Fight Team, licensed under GPLv3.
 * Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
 */

package com.tiedup.remake.rig.patch;

import net.minecraft.server.level.ServerPlayer;

/**
 * Patch côté serveur pour les joueurs. Hérite tout de {@link PlayerPatch} —
 * on ne garde qu'un seul override : {@link #overrideRender()} forcé à
 * {@code false}.
 *
 * <p><b>Pourquoi override render → false</b> : le serveur ne rend rien
 * visuellement, mais l'animator continue de tourner pour calculer la pose
 * "aveugle" (pos joints à un tick donné). Cette pose sert au tracker serveur
 * (combat hitboxes EF, hook AI TiedUp). {@link PlayerPatch#overrideRender()}
 * retourne {@code true} par défaut → si on oubliait l'override, un dispatcher
 * de rendering théorique côté serveur (il n'y en a pas actuellement, mais
 * l'API publique le permet) se déclencherait à tort.</p>
 *
 * <p><b>Ce qui est dans PlayerPatch et hérité ici</b> :</p>
 * <ul>
 *   <li>{@code getArmature()} → {@link com.tiedup.remake.rig.TiedUpArmatures#BIPED}</li>
 *   <li>{@code getModelMatrix(partialTick)} — inutile côté serveur mais pas de
 *       coût à le garder (pas appelé)</li>
 *   <li>{@code updateMotion(boolean)} no-op Phase 2.4</li>
 *   <li>{@code initAnimator} bind IDLE → EMPTY_ANIMATION</li>
 * </ul>
 *
 * <p>Phase 2.7+ : {@code serverTick} override pour poser motion + sync aux
 * clients via packet (cf. EF {@code PlayerPatch.serverTick}). Phase 3+ :
 * hooks struggle / kidnap state ici.</p>
 */
public class ServerPlayerPatch extends PlayerPatch<ServerPlayer> {

    /**
     * Override à false — le serveur n'intercepte jamais le render (il ne rend
     * pas). Voir doc classe pour pourquoi c'est important malgré l'absence
     * de renderer serveur actuel.
     */
    @Override
    public boolean overrideRender() {
        return false;
    }
}
