minecraft-src/net/minecraft/client/gui/narration/NarratableEntry.java
2025-07-04 03:15:13 +03:00

57 lines
1.3 KiB
Java

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<? extends NarratableEntry> 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.
* <p>
* @return {@code true} if the narration priority is terminal, {@code false} otherwise.
*/
public boolean isTerminal() {
return this == FOCUSED;
}
}
}