/*
 * 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.client.player.AbstractClientPlayer;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

/**
 * Patch côté client pour les joueurs remote (autres joueurs en session multi).
 *
 * <p>Hérite tout de {@link PlayerPatch} :
 * {@link #overrideRender()} = true, armature biped, updateMotion stub.
 * Pour un remote player on veut systématiquement le rendering RIG — pas de
 * cas où on voudrait le modèle vanilla MC (qui perdrait les items bondage
 * RIG-attached Phase 3).</p>
 *
 * <p><b>Différence avec {@link LocalPlayerPatch}</b> : ce dernier override
 * {@link #overrideRender()} pour désactiver le render RIG en first-person
 * (sinon on verrait l'intérieur du mesh). Les remote players ne sont jamais
 * en first-person du point de vue de l'observer → pas besoin.</p>
 *
 * <p>Forke conceptuellement {@code yesman.epicfight.client.world.capabilites.entitypatch.player.AbstractClientPlayerPatch}
 * (EF 479 LOC) mais réécrit from scratch (D-04) car ~80% du contenu original
 * est combat/skill non réutilisable pour TiedUp (slim/default model switch,
 * cape handling, skin tick — tout ça pourrait être utile Phase 5 si on
 * restaure le rendering custom skin layer).</p>
 *
 * @param <T> concrete type (remote player, et fallback pour LocalPlayer via
 *            {@link LocalPlayerPatch})
 */
@OnlyIn(Dist.CLIENT)
public class ClientPlayerPatch<T extends AbstractClientPlayer> extends PlayerPatch<T> {

    /**
     * Placeholder pour la logique "cacher le player en first-person pour les
     * items de type wrap / latex_sack / cape-over-head" (V3-REW-01, item
     * rework Phase 3).
     *
     * <p>Actuellement retourne toujours {@code false} — aucun item ne demande
     * ce hide. Sera re-implémenté Phase 3 quand le
     * {@code PlayerArmHideEventHandler} V2 sera porté en jointMask-based
     * logic côté StaticAnimation (cf.
     * {@code docs/plans/rig/V3_REWORK_BACKLOG.md} V3-REW-01).</p>
     *
     * <p>Appelé depuis le renderer patched Phase 2.5+ : si true, skip le
     * draw du mesh player (mais draw les items bondage attachés).</p>
     *
     * @return true si le player doit être invisible en first-person
     */
    public boolean isFirstPersonHidden() {
        // TODO Phase 3 (V3-REW-01) : check equipped items pour wrap / latex_sack.
        return false;
    }
}
