SystemToast.java
net.minecraft.client.gui.components.toasts.SystemToast
信息
- 全限定名:net.minecraft.client.gui.components.toasts.SystemToast
- 类型:public class
- 包:net.minecraft.client.gui.components.toasts
- 源码路径:src/main/java/net/minecraft/client/gui/components/toasts/SystemToast.java
- 起始行号:L19
- 实现:Toast
- 职责:
TODO
字段/常量
-
BACKGROUND_SPRITE- 类型:
Identifier - 修饰符:
private static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
MAX_LINE_SIZE- 类型:
int - 修饰符:
private static final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
LINE_SPACING- 类型:
int - 修饰符:
private static final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
MARGIN- 类型:
int - 修饰符:
private static final - 源码定位:
L23 - 说明:
TODO
- 类型:
-
id- 类型:
SystemToast.SystemToastId - 修饰符:
private final - 源码定位:
L24 - 说明:
TODO
- 类型:
-
title- 类型:
Component - 修饰符:
private - 源码定位:
L25 - 说明:
TODO
- 类型:
-
messageLines- 类型:
List<FormattedCharSequence> - 修饰符:
private - 源码定位:
L26 - 说明:
TODO
- 类型:
-
lastChanged- 类型:
long - 修饰符:
private - 源码定位:
L27 - 说明:
TODO
- 类型:
-
changed- 类型:
boolean - 修饰符:
private - 源码定位:
L28 - 说明:
TODO
- 类型:
-
width- 类型:
int - 修饰符:
private final - 源码定位:
L29 - 说明:
TODO
- 类型:
-
forceHide- 类型:
boolean - 修饰符:
private - 源码定位:
L30 - 说明:
TODO
- 类型:
-
wantedVisibility- 类型:
Toast.Visibility - 修饰符:
private - 源码定位:
L31 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.gui.components.toasts.SystemToast.SystemToastId- 类型:
class - 修饰符:
public static - 源码定位:
L194 - 说明:
TODO
- 类型:
构造器
public SystemToast(SystemToast.SystemToastId id, Component title, Component message) @ L33
- 构造器名:SystemToast
- 源码定位:L33
- 修饰符:public
参数:
- id: SystemToast.SystemToastId
- title: Component
- message: Component
说明:
TODO
private SystemToast(SystemToast.SystemToastId id, Component title, List<FormattedCharSequence> messageLines, int width) @ L49
- 构造器名:SystemToast
- 源码定位:L49
- 修饰符:private
参数:
- id: SystemToast.SystemToastId
- title: Component
- messageLines: List
- width: int
说明:
TODO
方法
下面的方法块按源码顺序生成。
public static SystemToast multiline(Minecraft minecraft, SystemToast.SystemToastId id, Component title, Component message) @ L42
- 方法名:multiline
- 源码定位:L42
- 返回类型:SystemToast
- 修饰符:public static
参数:
- minecraft: Minecraft
- id: SystemToast.SystemToastId
- title: Component
- message: Component
说明:
TODO
private static ImmutableList<FormattedCharSequence> nullToEmpty(Component message) @ L56
- 方法名:nullToEmpty
- 源码定位:L56
- 返回类型:ImmutableList
- 修饰符:private static
参数:
- message: Component
说明:
TODO
public int width() @ L60
- 方法名:width
- 源码定位:L60
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
public int height() @ L65
- 方法名:height
- 源码定位:L65
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
public void forceHide() @ L70
- 方法名:forceHide
- 源码定位:L70
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public Toast.Visibility getWantedVisibility() @ L74
- 方法名:getWantedVisibility
- 源码定位:L74
- 返回类型:Toast.Visibility
- 修饰符:public
参数:
- 无
说明:
TODO
public void update(ToastManager manager, long fullyVisibleForMs) @ L79
- 方法名:update
- 源码定位:L79
- 返回类型:void
- 修饰符:public
参数:
- manager: ToastManager
- fullyVisibleForMs: long
说明:
TODO
public void extractRenderState(GuiGraphicsExtractor graphics, Font font, long fullyVisibleForMs) @ L91
- 方法名:extractRenderState
- 源码定位:L91
- 返回类型:void
- 修饰符:public
参数:
- graphics: GuiGraphicsExtractor
- font: Font
- fullyVisibleForMs: long
说明:
TODO
public void reset(Component title, Component message) @ L105
- 方法名:reset
- 源码定位:L105
- 返回类型:void
- 修饰符:public
参数:
- title: Component
- message: Component
说明:
TODO
public SystemToast.SystemToastId getToken() @ L111
- 方法名:getToken
- 源码定位:L111
- 返回类型:SystemToast.SystemToastId
- 修饰符:public
参数:
- 无
说明:
TODO
public static void add(ToastManager toastManager, SystemToast.SystemToastId id, Component title, Component message) @ L115
- 方法名:add
- 源码定位:L115
- 返回类型:void
- 修饰符:public static
参数:
- toastManager: ToastManager
- id: SystemToast.SystemToastId
- title: Component
- message: Component
说明:
TODO
public static void addOrUpdate(ToastManager toastManager, SystemToast.SystemToastId id, Component title, Component message) @ L119
- 方法名:addOrUpdate
- 源码定位:L119
- 返回类型:void
- 修饰符:public static
参数:
- toastManager: ToastManager
- id: SystemToast.SystemToastId
- title: Component
- message: Component
说明:
TODO
public static void forceHide(ToastManager toastManager, SystemToast.SystemToastId id) @ L128
- 方法名:forceHide
- 源码定位:L128
- 返回类型:void
- 修饰符:public static
参数:
- toastManager: ToastManager
- id: SystemToast.SystemToastId
说明:
TODO
public static void onWorldAccessFailure(Minecraft minecraft, String levelId) @ L135
- 方法名:onWorldAccessFailure
- 源码定位:L135
- 返回类型:void
- 修饰符:public static
参数:
- minecraft: Minecraft
- levelId: String
说明:
TODO
public static void onWorldDeleteFailure(Minecraft minecraft, String levelId) @ L144
- 方法名:onWorldDeleteFailure
- 源码定位:L144
- 返回类型:void
- 修饰符:public static
参数:
- minecraft: Minecraft
- levelId: String
说明:
TODO
public static void onPackCopyFailure(Minecraft minecraft, String extraInfo) @ L153
- 方法名:onPackCopyFailure
- 源码定位:L153
- 返回类型:void
- 修饰符:public static
参数:
- minecraft: Minecraft
- extraInfo: String
说明:
TODO
public static void onFileDropFailure(Minecraft minecraft, int count) @ L157
- 方法名:onFileDropFailure
- 源码定位:L157
- 返回类型:void
- 修饰符:public static
参数:
- minecraft: Minecraft
- count: int
说明:
TODO
public static void onLowDiskSpace(Minecraft minecraft) @ L166
- 方法名:onLowDiskSpace
- 源码定位:L166
- 返回类型:void
- 修饰符:public static
参数:
- minecraft: Minecraft
说明:
TODO
public static void onChunkLoadFailure(Minecraft minecraft, ChunkPos pos) @ L175
- 方法名:onChunkLoadFailure
- 源码定位:L175
- 返回类型:void
- 修饰符:public static
参数:
- minecraft: Minecraft
- pos: ChunkPos
说明:
TODO
public static void onChunkSaveFailure(Minecraft minecraft, ChunkPos pos) @ L184
- 方法名:onChunkSaveFailure
- 源码定位:L184
- 返回类型:void
- 修饰符:public static
参数:
- minecraft: Minecraft
- pos: ChunkPos
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class SystemToast implements Toast {
private static final Identifier BACKGROUND_SPRITE = Identifier.withDefaultNamespace("toast/system");
private static final int MAX_LINE_SIZE = 200;
private static final int LINE_SPACING = 12;
private static final int MARGIN = 10;
private final SystemToast.SystemToastId id;
private Component title;
private List<FormattedCharSequence> messageLines;
private long lastChanged;
private boolean changed;
private final int width;
private boolean forceHide;
private Toast.Visibility wantedVisibility = Toast.Visibility.HIDE;
public SystemToast(SystemToast.SystemToastId id, Component title, @Nullable Component message) {
this(
id,
title,
nullToEmpty(message),
Math.max(160, 30 + Math.max(Minecraft.getInstance().font.width(title), message == null ? 0 : Minecraft.getInstance().font.width(message)))
);
}
public static SystemToast multiline(Minecraft minecraft, SystemToast.SystemToastId id, Component title, Component message) {
Font font = minecraft.font;
List<FormattedCharSequence> lines = font.split(message, 200);
int width = Math.max(200, lines.stream().mapToInt(font::width).max().orElse(200));
return new SystemToast(id, title, lines, width + 30);
}
private SystemToast(SystemToast.SystemToastId id, Component title, List<FormattedCharSequence> messageLines, int width) {
this.id = id;
this.title = title;
this.messageLines = messageLines;
this.width = width;
}
private static ImmutableList<FormattedCharSequence> nullToEmpty(@Nullable Component message) {
return message == null ? ImmutableList.of() : ImmutableList.of(message.getVisualOrderText());
}
@Override
public int width() {
return this.width;
}
@Override
public int height() {
return 20 + Math.max(this.messageLines.size(), 1) * 12;
}
public void forceHide() {
this.forceHide = true;
}
@Override
public Toast.Visibility getWantedVisibility() {
return this.wantedVisibility;
}
@Override
public void update(ToastManager manager, long fullyVisibleForMs) {
if (this.changed) {
this.lastChanged = fullyVisibleForMs;
this.changed = false;
}
double timeToDisplayUpdate = this.id.displayTime * manager.getNotificationDisplayTimeMultiplier();
long timeSinceUpdate = fullyVisibleForMs - this.lastChanged;
this.wantedVisibility = !this.forceHide && timeSinceUpdate < timeToDisplayUpdate ? Toast.Visibility.SHOW : Toast.Visibility.HIDE;
}
@Override
public void extractRenderState(GuiGraphicsExtractor graphics, Font font, long fullyVisibleForMs) {
graphics.blitSprite(RenderPipelines.GUI_TEXTURED, BACKGROUND_SPRITE, 0, 0, this.width(), this.height());
if (this.messageLines.isEmpty()) {
graphics.text(font, this.title, 18, 12, -256, false);
} else {
graphics.text(font, this.title, 18, 7, -256, false);
for (int i = 0; i < this.messageLines.size(); i++) {
graphics.text(font, this.messageLines.get(i), 18, 18 + i * 12, -1, false);
}
}
}
public void reset(Component title, @Nullable Component message) {
this.title = title;
this.messageLines = nullToEmpty(message);
this.changed = true;
}
public SystemToast.SystemToastId getToken() {
return this.id;
}
public static void add(ToastManager toastManager, SystemToast.SystemToastId id, Component title, @Nullable Component message) {
toastManager.addToast(new SystemToast(id, title, message));
}
public static void addOrUpdate(ToastManager toastManager, SystemToast.SystemToastId id, Component title, @Nullable Component message) {
SystemToast toast = toastManager.getToast(SystemToast.class, id);
if (toast == null) {
add(toastManager, id, title, message);
} else {
toast.reset(title, message);
}
}
public static void forceHide(ToastManager toastManager, SystemToast.SystemToastId id) {
SystemToast toast = toastManager.getToast(SystemToast.class, id);
if (toast != null) {
toast.forceHide();
}
}
public static void onWorldAccessFailure(Minecraft minecraft, String levelId) {
add(
minecraft.getToastManager(),
SystemToast.SystemToastId.WORLD_ACCESS_FAILURE,
Component.translatable("selectWorld.access_failure"),
Component.literal(levelId)
);
}
public static void onWorldDeleteFailure(Minecraft minecraft, String levelId) {
add(
minecraft.getToastManager(),
SystemToast.SystemToastId.WORLD_ACCESS_FAILURE,
Component.translatable("selectWorld.delete_failure"),
Component.literal(levelId)
);
}
public static void onPackCopyFailure(Minecraft minecraft, String extraInfo) {
add(minecraft.getToastManager(), SystemToast.SystemToastId.PACK_COPY_FAILURE, Component.translatable("pack.copyFailure"), Component.literal(extraInfo));
}
public static void onFileDropFailure(Minecraft minecraft, int count) {
add(
minecraft.getToastManager(),
SystemToast.SystemToastId.FILE_DROP_FAILURE,
Component.translatable("gui.fileDropFailure.title"),
Component.translatable("gui.fileDropFailure.detail", count)
);
}
public static void onLowDiskSpace(Minecraft minecraft) {
addOrUpdate(
minecraft.getToastManager(),
SystemToast.SystemToastId.LOW_DISK_SPACE,
Component.translatable("chunk.toast.lowDiskSpace"),
Component.translatable("chunk.toast.lowDiskSpace.description")
);
}
public static void onChunkLoadFailure(Minecraft minecraft, ChunkPos pos) {
addOrUpdate(
minecraft.getToastManager(),
SystemToast.SystemToastId.CHUNK_LOAD_FAILURE,
Component.translatable("chunk.toast.loadFailure", Component.translationArg(pos)).withStyle(ChatFormatting.RED),
Component.translatable("chunk.toast.checkLog")
);
}
public static void onChunkSaveFailure(Minecraft minecraft, ChunkPos pos) {
addOrUpdate(
minecraft.getToastManager(),
SystemToast.SystemToastId.CHUNK_SAVE_FAILURE,
Component.translatable("chunk.toast.saveFailure", Component.translationArg(pos)).withStyle(ChatFormatting.RED),
Component.translatable("chunk.toast.checkLog")
);
}
@OnlyIn(Dist.CLIENT)
public static class SystemToastId {
public static final SystemToast.SystemToastId NARRATOR_TOGGLE = new SystemToast.SystemToastId();
public static final SystemToast.SystemToastId WORLD_BACKUP = new SystemToast.SystemToastId();
public static final SystemToast.SystemToastId PACK_LOAD_FAILURE = new SystemToast.SystemToastId();
public static final SystemToast.SystemToastId WORLD_ACCESS_FAILURE = new SystemToast.SystemToastId();
public static final SystemToast.SystemToastId PACK_COPY_FAILURE = new SystemToast.SystemToastId();
public static final SystemToast.SystemToastId FILE_DROP_FAILURE = new SystemToast.SystemToastId();
public static final SystemToast.SystemToastId PERIODIC_NOTIFICATION = new SystemToast.SystemToastId();
public static final SystemToast.SystemToastId LOW_DISK_SPACE = new SystemToast.SystemToastId(10000L);
public static final SystemToast.SystemToastId CHUNK_LOAD_FAILURE = new SystemToast.SystemToastId();
public static final SystemToast.SystemToastId CHUNK_SAVE_FAILURE = new SystemToast.SystemToastId();
public static final SystemToast.SystemToastId UNSECURE_SERVER_WARNING = new SystemToast.SystemToastId(10000L);
private final long displayTime;
public SystemToastId(long displayTime) {
this.displayTime = displayTime;
}
public SystemToastId() {
this(5000L);
}
}
}引用的其他类
-
- 引用位置:
参数/方法调用 - 关联成员:
Minecraft.getInstance()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段/实现/返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
Component.literal(), Component.translatable(), Component.translationArg()
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Identifier.withDefaultNamespace()
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置: