package net.minecraft.client.gui.narration; import java.util.Collection; import java.util.List; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.components.TabOrderedElement; /** * An interface for GUI elements that can provide narration information. */ @Environment(EnvType.CLIENT) public interface NarratableEntry extends TabOrderedElement, NarrationSupplier { /** * {@return the narration priority} */ NarratableEntry.NarrationPriority narrationPriority(); /** * {@return {@code true} if the element is active, {@code false} otherwise} */ default boolean isActive() { return true; } default Collection getNarratables() { return List.of(this); } /** * The narration priority levels. */ @Environment(EnvType.CLIENT) public static enum NarrationPriority { /** * No narration priority. */ NONE, /** * Narration priority when the element is being hovered. */ HOVERED, /** * Narration priority when the element is focused. */ FOCUSED; /** * Checks if the narration priority is terminal, indicating that no further narration will occur after this. *

* @return {@code true} if the narration priority is terminal, {@code false} otherwise. */ public boolean isTerminal() { return this == FOCUSED; } } }