Spaces:
Build error
Build error
File size: 4,312 Bytes
d46f4a3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
package net.minecraft.client;
import com.mojang.logging.LogUtils;
import com.mojang.text2speech.Narrator;
import net.minecraft.SharedConstants;
import net.minecraft.client.gui.components.toasts.SystemToast;
import net.minecraft.client.gui.components.toasts.ToastManager;
import net.minecraft.client.main.SilentInitException;
import net.minecraft.network.chat.CommonComponents;
import net.minecraft.network.chat.Component;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.lwjgl.util.tinyfd.TinyFileDialogs;
import org.slf4j.Logger;
@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 p_240577_) {
this.minecraft = p_240577_;
}
public void sayChat(Component p_263413_) {
if (this.getStatus().shouldNarrateChat()) {
String s = p_263413_.getString();
this.logNarratedMessage(s);
this.narrator.say(s, false, 1.0f);
}
}
public void say(Component p_263389_) {
String s = p_263389_.getString();
if (this.getStatus().shouldNarrateSystem() && !s.isEmpty()) {
this.logNarratedMessage(s);
this.narrator.say(s, false, 1.0f);
}
}
public void sayNow(Component p_168786_) {
this.sayNow(p_168786_.getString());
}
public void sayNow(String p_93320_) {
if (this.getStatus().shouldNarrateSystem() && !p_93320_.isEmpty()) {
this.logNarratedMessage(p_93320_);
if (this.narrator.active()) {
this.narrator.clear();
this.narrator.say(p_93320_, true, 1.0f);
}
}
}
private NarratorStatus getStatus() {
return this.minecraft.options.narrator().get();
}
private void logNarratedMessage(String p_168788_) {
if (SharedConstants.IS_RUNNING_IN_IDE) {
LOGGER.debug("Narrating: {}", p_168788_.replaceAll("\n", "\\\\n"));
}
}
public void updateNarratorStatus(NarratorStatus p_93318_) {
this.clear();
this.narrator.say(Component.translatable("options.narrator").append(" : ").append(p_93318_.getName()).getString(), true, 1.0f);
ToastManager toastmanager = Minecraft.getInstance().getToastManager();
if (this.narrator.active()) {
if (p_93318_ == 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"), p_93318_.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 p_289016_) {
if (p_289016_
&& !this.isActive()
&& !TinyFileDialogs.tinyfd_messageBox(
"Minecraft",
"Failed to initialize text-to-speech library. Do you want to continue?\nIf this problem persists, please report it at bugs.mojang.com",
"yesno",
"error",
true
)) {
throw new GameNarrator.NarratorInitException("Narrator library is not active");
}
}
@OnlyIn(Dist.CLIENT)
public static class NarratorInitException extends SilentInitException {
public NarratorInitException(String p_288985_) {
super(p_288985_);
}
}
} |