Volver al índice

src/main/java/ar/com/companeros/horror/client/HorrorClientSafety.java

package ar.com.companeros.horror.client;

import ar.com.companeros.Companeros;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.ClientPlayerNetworkEvent;
import net.minecraftforge.client.event.sound.PlaySoundEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;

/** Preferencia del observador recibida del servidor; nunca modifica otras entidades. */
@Mod.EventBusSubscriber(modid = Companeros.ID, value = Dist.CLIENT)
public final class HorrorClientSafety {
    private static volatile boolean enabled = true;
    private HorrorClientSafety() { }
    public static void setEnabled(boolean value) { enabled = value; }
    public static boolean isEnabled() { return enabled; }

    // Una conexión nueva recibe su propio estado, sin heredar el de otro servidor.
    @SubscribeEvent public static void disconnected(ClientPlayerNetworkEvent.LoggingOut event) { enabled = true; }

    // También cubre sonidos ambientales que otro jugador cercano haya provocado.
    @SubscribeEvent public static void sound(PlaySoundEvent event) {
        if (!enabled || event.getSound() == null) return;
        var id = event.getSound().getLocation();
        if (id.getNamespace().equals(Companeros.ID) && id.getPath().startsWith("parasite_")) event.setSound(null);
    }
}