package com.tiedup.remake.v2.furniture; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.Nullable; /** * Sound events for furniture interactions. All fields are optional * -- null means "use the default sound" at runtime. * *

Loaded from the {@code "feedback"} block of a furniture JSON definition. * When the entire block is absent, {@link #EMPTY} is used.

*/ public record FurnitureFeedback( /** Sound played when a player mounts the furniture. */ @Nullable ResourceLocation mountSound, /** Sound played when a seat is locked. */ @Nullable ResourceLocation lockSound, /** Sound played when a seat is unlocked. */ @Nullable ResourceLocation unlockSound, /** Looping sound played while a player struggles in a locked seat. */ @Nullable ResourceLocation struggleLoopSound, /** Sound played on successful escape. */ @Nullable ResourceLocation escapeSound, /** Sound played when an action is denied (e.g., locked seat interaction). */ @Nullable ResourceLocation deniedSound ) { /** Empty feedback -- all sounds null (use defaults). */ public static final FurnitureFeedback EMPTY = new FurnitureFeedback( null, null, null, null, null, null ); }