GameNarrator.java
net.minecraft.client.GameNarrator
信息
- 全限定名:net.minecraft.client.GameNarrator
- 类型:public class
- 包:net.minecraft.client
- 源码路径:src/main/java/net/minecraft/client/GameNarrator.java
- 起始行号:L18
- 职责:
TODO
字段/常量
-
NO_TITLE- 类型:
Component - 修饰符:
public static final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
minecraft- 类型:
Minecraft - 修饰符:
private final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
narrator- 类型:
Narrator - 修饰符:
private final - 源码定位:
L22 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.GameNarrator.NarratorInitException- 类型:
class - 修饰符:
public static - 源码定位:
L129 - 说明:
TODO
- 类型:
构造器
public GameNarrator(Minecraft minecraft) @ L24
- 构造器名:GameNarrator
- 源码定位:L24
- 修饰符:public
参数:
- minecraft: Minecraft
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void sayChatQueued(Component message) @ L28
- 方法名:sayChatQueued
- 源码定位:L28
- 返回类型:void
- 修饰符:public
参数:
- message: Component
说明:
TODO
public void saySystemChatQueued(Component message) @ L34
- 方法名:saySystemChatQueued
- 源码定位:L34
- 返回类型:void
- 修饰符:public
参数:
- message: Component
说明:
TODO
public void saySystemQueued(Component message) @ L40
- 方法名:saySystemQueued
- 源码定位:L40
- 返回类型:void
- 修饰符:public
参数:
- message: Component
说明:
TODO
private void narrateNotInterruptingMessage(Component message) @ L46
- 方法名:narrateNotInterruptingMessage
- 源码定位:L46
- 返回类型:void
- 修饰符:private
参数:
- message: Component
说明:
TODO
public void saySystemNow(Component message) @ L54
- 方法名:saySystemNow
- 源码定位:L54
- 返回类型:void
- 修饰符:public
参数:
- message: Component
说明:
TODO
public void saySystemNow(String message) @ L58
- 方法名:saySystemNow
- 源码定位:L58
- 返回类型:void
- 修饰符:public
参数:
- message: String
说明:
TODO
private void narrateMessage(String message, boolean interrupt) @ L68
- 方法名:narrateMessage
- 源码定位:L68
- 返回类型:void
- 修饰符:private
参数:
- message: String
- interrupt: boolean
说明:
TODO
private NarratorStatus getStatus() @ L72
- 方法名:getStatus
- 源码定位:L72
- 返回类型:NarratorStatus
- 修饰符:private
参数:
- 无
说明:
TODO
private void logNarratedMessage(String message) @ L76
- 方法名:logNarratedMessage
- 源码定位:L76
- 返回类型:void
- 修饰符:private
参数:
- message: String
说明:
TODO
public void updateNarratorStatus(NarratorStatus status) @ L82
- 方法名:updateNarratorStatus
- 源码定位:L82
- 返回类型:void
- 修饰符:public
参数:
- status: NarratorStatus
说明:
TODO
public boolean isActive() @ L104
- 方法名:isActive
- 源码定位:L104
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public void clear() @ L108
- 方法名:clear
- 源码定位:L108
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void destroy() @ L114
- 方法名:destroy
- 源码定位:L114
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void checkStatus(boolean requiredActive) @ L118
- 方法名:checkStatus
- 源码定位:L118
- 返回类型:void
- 修饰符:public
参数:
- requiredActive: boolean
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class GameNarrator {
public static final Component NO_TITLE = CommonComponents.EMPTY;
private static final Logger LOGGER = LogUtils.getLogger();
private final Minecraft minecraft;
private final Narrator narrator = Narrator.getNarrator();
public GameNarrator(Minecraft minecraft) {
this.minecraft = minecraft;
}
public void sayChatQueued(Component message) {
if (this.getStatus().shouldNarrateChat()) {
this.narrateNotInterruptingMessage(message);
}
}
public void saySystemChatQueued(Component message) {
if (this.getStatus().shouldNarrateSystemOrChat()) {
this.narrateNotInterruptingMessage(message);
}
}
public void saySystemQueued(Component message) {
if (this.getStatus().shouldNarrateSystem()) {
this.narrateNotInterruptingMessage(message);
}
}
private void narrateNotInterruptingMessage(Component message) {
String messageString = message.getString();
if (!messageString.isEmpty()) {
this.logNarratedMessage(messageString);
this.narrateMessage(messageString, false);
}
}
public void saySystemNow(Component message) {
this.saySystemNow(message.getString());
}
public void saySystemNow(String message) {
if (this.getStatus().shouldNarrateSystem() && !message.isEmpty()) {
this.logNarratedMessage(message);
if (this.narrator.active()) {
this.narrator.clear();
this.narrateMessage(message, true);
}
}
}
private void narrateMessage(String message, boolean interrupt) {
this.narrator.say(message, interrupt, this.minecraft.options.getFinalSoundSourceVolume(SoundSource.VOICE));
}
private NarratorStatus getStatus() {
return this.minecraft.options.narrator().get();
}
private void logNarratedMessage(String message) {
if (SharedConstants.IS_RUNNING_IN_IDE) {
LOGGER.debug("Narrating: {}", message.replaceAll("\n", "\\\\n"));
}
}
public void updateNarratorStatus(NarratorStatus status) {
this.clear();
this.narrateMessage(Component.translatable("options.narrator").append(" : ").append(status.getName()).getString(), true);
ToastManager toastManager = Minecraft.getInstance().getToastManager();
if (this.narrator.active()) {
if (status == NarratorStatus.OFF) {
SystemToast.addOrUpdate(toastManager, SystemToast.SystemToastId.NARRATOR_TOGGLE, Component.translatable("narrator.toast.disabled"), null);
} else {
SystemToast.addOrUpdate(
toastManager, SystemToast.SystemToastId.NARRATOR_TOGGLE, Component.translatable("narrator.toast.enabled"), status.getName()
);
}
} else {
SystemToast.addOrUpdate(
toastManager,
SystemToast.SystemToastId.NARRATOR_TOGGLE,
Component.translatable("narrator.toast.disabled"),
Component.translatable("options.narrator.notavailable")
);
}
}
public boolean isActive() {
return this.narrator.active();
}
public void clear() {
if (this.getStatus() != NarratorStatus.OFF && this.narrator.active()) {
this.narrator.clear();
}
}
public void destroy() {
this.narrator.destroy();
}
public void checkStatus(boolean requiredActive) {
if (requiredActive
&& !this.isActive()
&& !MessageBox.errorWithContinue(
"Failed to initialize text-to-speech library. Do you want to continue?\nIf this problem persists, please report it at bugs.mojang.com"
)) {
throw new GameNarrator.NarratorInitException("Narrator library is not active");
}
}
@OnlyIn(Dist.CLIENT)
public static class NarratorInitException extends SilentInitException {
public NarratorInitException(String message) {
super(message);
}
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
MessageBox.errorWithContinue()
- 引用位置:
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
Minecraft.getInstance()
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
SystemToast.addOrUpdate()
- 引用位置:
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
Component.translatable()
- 引用位置: