VideoSettingsScreen.java
net.minecraft.client.gui.screens.options.VideoSettingsScreen
信息
- 全限定名:net.minecraft.client.gui.screens.options.VideoSettingsScreen
- 类型:public class
- 包:net.minecraft.client.gui.screens.options
- 源码路径:src/main/java/net/minecraft/client/gui/screens/options/VideoSettingsScreen.java
- 起始行号:L27
- 继承:OptionsSubScreen
- 职责:
TODO
字段/常量
-
TITLE- 类型:
Component - 修饰符:
private static final - 源码定位:
L28 - 说明:
TODO
- 类型:
-
IMPROVED_TRANSPARENCY- 类型:
Component - 修饰符:
private static final - 源码定位:
L29 - 说明:
TODO
- 类型:
-
WARNING_MESSAGE- 类型:
Component - 修饰符:
private static final - 源码定位:
L30 - 说明:
TODO
- 类型:
-
WARNING_TITLE- 类型:
Component - 修饰符:
private static final - 源码定位:
L31 - 说明:
TODO
- 类型:
-
BUTTON_ACCEPT- 类型:
Component - 修饰符:
private static final - 源码定位:
L32 - 说明:
TODO
- 类型:
-
BUTTON_CANCEL- 类型:
Component - 修饰符:
private static final - 源码定位:
L33 - 说明:
TODO
- 类型:
-
DISPLAY_HEADER- 类型:
Component - 修饰符:
private static final - 源码定位:
L34 - 说明:
TODO
- 类型:
-
QUALITY_HEADER- 类型:
Component - 修饰符:
private static final - 源码定位:
L35 - 说明:
TODO
- 类型:
-
PREFERENCES_HEADER- 类型:
Component - 修饰符:
private static final - 源码定位:
L36 - 说明:
TODO
- 类型:
-
gpuWarnlistManager- 类型:
GpuWarnlistManager - 修饰符:
private final - 源码定位:
L37 - 说明:
TODO
- 类型:
-
oldMipmaps- 类型:
int - 修饰符:
private final - 源码定位:
L38 - 说明:
TODO
- 类型:
-
oldAnisotropyBit- 类型:
int - 修饰符:
private final - 源码定位:
L39 - 说明:
TODO
- 类型:
-
oldTextureFiltering- 类型:
TextureFilteringMethod - 修饰符:
private final - 源码定位:
L40 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public VideoSettingsScreen(Screen lastScreen, Minecraft minecraft, Options options) @ L80
- 构造器名:VideoSettingsScreen
- 源码定位:L80
- 修饰符:public
参数:
- lastScreen: Screen
- minecraft: Minecraft
- options: Options
说明:
TODO
方法
下面的方法块按源码顺序生成。
private static OptionInstance<?>[] qualityOptions(Options options) @ L42
- 方法名:qualityOptions
- 源码定位:L42
- 返回类型:OptionInstance<?>[]
- 修饰符:private static
参数:
- options: Options
说明:
TODO
private static OptionInstance<?>[] displayOptions(Options options) @ L64
- 方法名:displayOptions
- 源码定位:L64
- 返回类型:OptionInstance<?>[]
- 修饰符:private static
参数:
- options: Options
说明:
TODO
private static OptionInstance<?>[] preferenceOptions(Options options) @ L76
- 方法名:preferenceOptions
- 源码定位:L76
- 返回类型:OptionInstance<?>[]
- 修饰符:private static
参数:
- options: Options
说明:
TODO
protected void addOptions() @ L93
- 方法名:addOptions
- 源码定位:L93
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
public void tick() @ L146
- 方法名:tick
- 源码定位:L146
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void onClose() @ L155
- 方法名:onClose
- 源码定位:L155
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void removed() @ L161
- 方法名:removed
- 源码定位:L161
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) @ L173
- 方法名:mouseClicked
- 源码定位:L173
- 返回类型:boolean
- 修饰符:public
参数:
- event: MouseButtonEvent
- doubleClick: boolean
说明:
TODO
public boolean mouseScrolled(double x, double y, double scrollX, double scrollY) @ L220
- 方法名:mouseScrolled
- 源码定位:L220
- 返回类型:boolean
- 修饰符:public
参数:
- x: double
- y: double
- scrollX: double
- scrollY: double
说明:
TODO
public void updateFullscreenButton(boolean fullscreen) @ L245
- 方法名:updateFullscreenButton
- 源码定位:L245
- 返回类型:void
- 修饰符:public
参数:
- fullscreen: boolean
说明:
TODO
public void updateTransparencyButton() @ L255
- 方法名:updateTransparencyButton
- 源码定位:L255
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class VideoSettingsScreen extends OptionsSubScreen {
private static final Component TITLE = Component.translatable("options.videoTitle");
private static final Component IMPROVED_TRANSPARENCY = Component.translatable("options.improvedTransparency").withStyle(ChatFormatting.ITALIC);
private static final Component WARNING_MESSAGE = Component.translatable("options.graphics.warning.message", IMPROVED_TRANSPARENCY, IMPROVED_TRANSPARENCY);
private static final Component WARNING_TITLE = Component.translatable("options.graphics.warning.title").withStyle(ChatFormatting.RED);
private static final Component BUTTON_ACCEPT = Component.translatable("options.graphics.warning.accept");
private static final Component BUTTON_CANCEL = Component.translatable("options.graphics.warning.cancel");
private static final Component DISPLAY_HEADER = Component.translatable("options.video.display.header");
private static final Component QUALITY_HEADER = Component.translatable("options.video.quality.header");
private static final Component PREFERENCES_HEADER = Component.translatable("options.video.preferences.header");
private final GpuWarnlistManager gpuWarnlistManager;
private final int oldMipmaps;
private final int oldAnisotropyBit;
private final TextureFilteringMethod oldTextureFiltering;
private static OptionInstance<?>[] qualityOptions(Options options) {
return new OptionInstance[]{
options.biomeBlendRadius(),
options.renderDistance(),
options.prioritizeChunkUpdates(),
options.simulationDistance(),
options.ambientOcclusion(),
options.cloudStatus(),
options.particles(),
options.mipmapLevels(),
options.entityShadows(),
options.entityDistanceScaling(),
options.menuBackgroundBlurriness(),
options.cloudRange(),
options.cutoutLeaves(),
options.improvedTransparency(),
options.textureFiltering(),
options.maxAnisotropyBit(),
options.weatherRadius()
};
}
private static OptionInstance<?>[] displayOptions(Options options) {
return new OptionInstance[]{
options.framerateLimit(),
options.enableVsync(),
options.inactivityFpsLimit(),
options.guiScale(),
options.fullscreen(),
options.exclusiveFullscreen(),
options.gamma()
};
}
private static OptionInstance<?>[] preferenceOptions(Options options) {
return new OptionInstance[]{options.showAutosaveIndicator(), options.vignette(), options.attackIndicator(), options.chunkSectionFadeInTime()};
}
public VideoSettingsScreen(Screen lastScreen, Minecraft minecraft, Options options) {
super(lastScreen, options, TITLE);
this.gpuWarnlistManager = minecraft.getGpuWarnlistManager();
this.gpuWarnlistManager.resetWarnings();
if (options.improvedTransparency().get()) {
this.gpuWarnlistManager.dismissWarning();
}
this.oldMipmaps = options.mipmapLevels().get();
this.oldAnisotropyBit = options.maxAnisotropyBit().get();
this.oldTextureFiltering = options.textureFiltering().get();
}
@Override
protected void addOptions() {
int CURRENT_MODE = -1;
Window window = this.minecraft.getWindow();
Monitor monitor = window.findBestMonitor();
int initialValue;
if (monitor == null) {
initialValue = -1;
} else {
Optional<VideoMode> preferredFullscreenVideoMode = window.getPreferredFullscreenVideoMode();
initialValue = preferredFullscreenVideoMode.map(monitor::getVideoModeIndex).orElse(-1);
}
OptionInstance<Integer> fullscreenOption = new OptionInstance<>(
"options.fullscreen.resolution",
OptionInstance.noTooltip(),
(caption, value) -> {
if (monitor == null) {
return Component.translatable("options.fullscreen.unavailable");
} else if (value == -1) {
return Options.genericValueLabel(caption, Component.translatable("options.fullscreen.current"));
} else {
VideoMode mode = monitor.getMode(value);
return Options.genericValueLabel(
caption,
Component.translatable(
"options.fullscreen.entry",
mode.getWidth(),
mode.getHeight(),
mode.getRefreshRate(),
mode.getRedBits() + mode.getGreenBits() + mode.getBlueBits()
)
);
}
},
new OptionInstance.IntRange(-1, monitor != null ? monitor.getModeCount() - 1 : -1),
initialValue,
value -> {
if (monitor != null) {
window.setPreferredFullscreenVideoMode(value == -1 ? Optional.empty() : Optional.of(monitor.getMode(value)));
}
}
);
this.list.addHeader(DISPLAY_HEADER);
this.list.addBig(fullscreenOption);
this.list.addSmall(displayOptions(this.options));
this.list.addHeader(QUALITY_HEADER);
this.list.addBig(this.options.graphicsPreset());
this.list.addSmall(qualityOptions(this.options));
this.list.addHeader(PREFERENCES_HEADER);
this.list.addSmall(preferenceOptions(this.options));
}
@Override
public void tick() {
if (this.list != null && this.list.findOption(this.options.maxAnisotropyBit()) instanceof AbstractSliderButton maxAnisotropy) {
maxAnisotropy.active = this.options.textureFiltering().get() == TextureFilteringMethod.ANISOTROPIC;
}
super.tick();
}
@Override
public void onClose() {
this.minecraft.getWindow().changeFullscreenVideoMode();
super.onClose();
}
@Override
public void removed() {
if (this.options.mipmapLevels().get() != this.oldMipmaps
|| this.options.maxAnisotropyBit().get() != this.oldAnisotropyBit
|| this.options.textureFiltering().get() != this.oldTextureFiltering) {
this.minecraft.updateMaxMipLevel(this.options.mipmapLevels().get());
this.minecraft.delayTextureReload();
}
super.removed();
}
@Override
public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) {
if (super.mouseClicked(event, doubleClick)) {
if (this.gpuWarnlistManager.isShowingWarning()) {
List<Component> warningMessage = Lists.newArrayList(WARNING_MESSAGE, CommonComponents.NEW_LINE);
String rendererWarnings = this.gpuWarnlistManager.getRendererWarnings();
if (rendererWarnings != null) {
warningMessage.add(CommonComponents.NEW_LINE);
warningMessage.add(Component.translatable("options.graphics.warning.renderer", rendererWarnings).withStyle(ChatFormatting.GRAY));
}
String vendorWarnings = this.gpuWarnlistManager.getVendorWarnings();
if (vendorWarnings != null) {
warningMessage.add(CommonComponents.NEW_LINE);
warningMessage.add(Component.translatable("options.graphics.warning.vendor", vendorWarnings).withStyle(ChatFormatting.GRAY));
}
String versionWarnings = this.gpuWarnlistManager.getVersionWarnings();
if (versionWarnings != null) {
warningMessage.add(CommonComponents.NEW_LINE);
warningMessage.add(Component.translatable("options.graphics.warning.version", versionWarnings).withStyle(ChatFormatting.GRAY));
}
this.minecraft
.setScreen(
new UnsupportedGraphicsWarningScreen(
WARNING_TITLE, warningMessage, ImmutableList.of(new UnsupportedGraphicsWarningScreen.ButtonOption(BUTTON_ACCEPT, btn -> {
this.options.improvedTransparency().set(true);
Minecraft.getInstance().levelRenderer.allChanged();
this.gpuWarnlistManager.dismissWarning();
this.minecraft.setScreen(this);
}), new UnsupportedGraphicsWarningScreen.ButtonOption(BUTTON_CANCEL, btn -> {
this.gpuWarnlistManager.dismissWarning();
this.options.improvedTransparency().set(false);
this.updateTransparencyButton();
this.minecraft.setScreen(this);
}))
)
);
}
return true;
} else {
return false;
}
}
@Override
public boolean mouseScrolled(double x, double y, double scrollX, double scrollY) {
if (this.minecraft.hasControlDown()) {
OptionInstance<Integer> guiScale = this.options.guiScale();
if (guiScale.values() instanceof OptionInstance.ClampingLazyMaxIntRange clampingLazyMaxIntRange) {
int oldValue = guiScale.get();
int adjustedOldValue = oldValue == 0 ? clampingLazyMaxIntRange.maxInclusive() + 1 : oldValue;
int newValue = adjustedOldValue + (int)Math.signum(scrollY);
if (newValue != 0 && newValue <= clampingLazyMaxIntRange.maxInclusive() && newValue >= clampingLazyMaxIntRange.minInclusive()) {
CycleButton<Integer> cycleButton = (CycleButton<Integer>)this.list.findOption(guiScale);
if (cycleButton != null) {
guiScale.set(newValue);
cycleButton.setValue(newValue);
this.list.setScrollAmount(0.0);
return true;
}
}
}
return false;
} else {
return super.mouseScrolled(x, y, scrollX, scrollY);
}
}
public void updateFullscreenButton(boolean fullscreen) {
if (this.list != null) {
AbstractWidget fullscreenWidget = this.list.findOption(this.options.fullscreen());
if (fullscreenWidget != null) {
CycleButton<Boolean> fullscreenButton = (CycleButton<Boolean>)fullscreenWidget;
fullscreenButton.setValue(fullscreen);
}
}
}
public void updateTransparencyButton() {
if (this.list != null) {
OptionInstance<Boolean> option = this.options.improvedTransparency();
AbstractWidget widget = this.list.findOption(option);
if (widget != null) {
CycleButton<Boolean> button = (CycleButton<Boolean>)widget;
button.setValue(option.get());
}
}
}
}引用的其他类
-
- 引用位置:
参数/方法调用 - 关联成员:
Minecraft.getInstance()
- 引用位置:
-
- 引用位置:
方法调用/构造调用/返回值 - 关联成员:
IntRange(), OptionInstance.IntRange(), OptionInstance.noTooltip()
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
Options.genericValueLabel()
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
UnsupportedGraphicsWarningScreen
- 引用位置:
方法调用/构造调用 - 关联成员:
ButtonOption(), UnsupportedGraphicsWarningScreen(), UnsupportedGraphicsWarningScreen.ButtonOption()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Component.translatable()
- 引用位置: