Options.java
net.minecraft.client.Options
信息
- 全限定名:net.minecraft.client.Options
- 类型:public class
- 包:net.minecraft.client
- 源码路径:src/main/java/net/minecraft/client/Options.java
- 起始行号:L80
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L81 - 说明:
TODO
- 类型:
-
GSON- 类型:
Gson - 修饰符:
private static final - 源码定位:
L82 - 说明:
TODO
- 类型:
-
LIST_OF_STRINGS_TYPE- 类型:
TypeToken<List<String>> - 修饰符:
private static final - 源码定位:
L83 - 说明:
TODO
- 类型:
-
RENDER_DISTANCE_SHORT- 类型:
int - 修饰符:
public static final - 源码定位:
L84 - 说明:
TODO
- 类型:
-
RENDER_DISTANCE_FAR- 类型:
int - 修饰符:
public static final - 源码定位:
L85 - 说明:
TODO
- 类型:
-
RENDER_DISTANCE_REALLY_FAR- 类型:
int - 修饰符:
public static final - 源码定位:
L86 - 说明:
TODO
- 类型:
-
RENDER_DISTANCE_EXTREME- 类型:
int - 修饰符:
public static final - 源码定位:
L87 - 说明:
TODO
- 类型:
-
OPTION_SPLITTER- 类型:
Splitter - 修饰符:
private static final - 源码定位:
L88 - 说明:
TODO
- 类型:
-
DEFAULT_SOUND_DEVICE- 类型:
String - 修饰符:
private static final - 源码定位:
L89 - 说明:
TODO
- 类型:
-
TOOLTIP_NEEDS_RESTART- 类型:
Component - 修饰符:
private static final - 源码定位:
L90 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_DARK_MOJANG_BACKGROUND- 类型:
Component - 修饰符:
private static final - 源码定位:
L91 - 说明:
TODO
- 类型:
-
darkMojangStudiosBackground- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L92 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_HIDE_LIGHTNING_FLASHES- 类型:
Component - 修饰符:
private static final - 源码定位:
L95 - 说明:
TODO
- 类型:
-
hideLightningFlash- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L96 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_HIDE_SPLASH_TEXTS- 类型:
Component - 修饰符:
private static final - 源码定位:
L99 - 说明:
TODO
- 类型:
-
hideSplashTexts- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L100 - 说明:
TODO
- 类型:
-
sensitivity- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L103 - 说明:
TODO
- 类型:
-
renderDistance- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L110 - 说明:
TODO
- 类型:
-
simulationDistance- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L111 - 说明:
TODO
- 类型:
-
serverRenderDistance- 类型:
int - 修饰符:
private - 源码定位:
L112 - 说明:
TODO
- 类型:
-
entityDistanceScaling- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L113 - 说明:
TODO
- 类型:
-
UNLIMITED_FRAMERATE_CUTOFF- 类型:
int - 修饰符:
public static final - 源码定位:
L122 - 说明:
TODO
- 类型:
-
framerateLimit- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L123 - 说明:
TODO
- 类型:
-
isApplyingGraphicsPreset- 类型:
boolean - 修饰符:
private - 源码定位:
L134 - 说明:
TODO
- 类型:
-
graphicsPreset- 类型:
OptionInstance<GraphicsPreset> - 修饰符:
private final - 源码定位:
L135 - 说明:
TODO
- 类型:
-
INACTIVITY_FPS_LIMIT_TOOLTIP_MINIMIZED- 类型:
Component - 修饰符:
private static final - 源码定位:
L144 - 说明:
TODO
- 类型:
-
INACTIVITY_FPS_LIMIT_TOOLTIP_AFK- 类型:
Component - 修饰符:
private static final - 源码定位:
L145 - 说明:
TODO
- 类型:
-
inactivityFpsLimit- 类型:
OptionInstance<InactivityFpsLimit> - 修饰符:
private final - 源码定位:
L146 - 说明:
TODO
- 类型:
-
cloudStatus- 类型:
OptionInstance<CloudStatus> - 修饰符:
private final - 源码定位:
L159 - 说明:
TODO
- 类型:
-
cloudRange- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L169 - 说明:
TODO
- 类型:
-
GRAPHICS_TOOLTIP_WEATHER_RADIUS- 类型:
Component - 修饰符:
private static final - 源码定位:
L180 - 说明:
TODO
- 类型:
-
weatherRadius- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L181 - 说明:
TODO
- 类型:
-
GRAPHICS_TOOLTIP_CUTOUT_LEAVES- 类型:
Component - 修饰符:
private static final - 源码定位:
L189 - 说明:
TODO
- 类型:
-
cutoutLeaves- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L190 - 说明:
TODO
- 类型:
-
GRAPHICS_TOOLTIP_VIGNETTE- 类型:
Component - 修饰符:
private static final - 源码定位:
L196 - 说明:
TODO
- 类型:
-
vignette- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L197 - 说明:
TODO
- 类型:
-
GRAPHICS_TOOLTIP_IMPROVED_TRANSPARENCY- 类型:
Component - 修饰符:
private static final - 源码定位:
L200 - 说明:
TODO
- 类型:
-
improvedTransparency- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L201 - 说明:
TODO
- 类型:
-
ambientOcclusion- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L213 - 说明:
TODO
- 类型:
-
GRAPHICS_TOOLTIP_CHUNK_FADE- 类型:
Component - 修饰符:
private static final - 源码定位:
L217 - 说明:
TODO
- 类型:
-
chunkSectionFadeInTime- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L218 - 说明:
TODO
- 类型:
-
PRIORITIZE_CHUNK_TOOLTIP_NONE- 类型:
Component - 修饰符:
private static final - 源码定位:
L229 - 说明:
TODO
- 类型:
-
PRIORITIZE_CHUNK_TOOLTIP_PLAYER_AFFECTED- 类型:
Component - 修饰符:
private static final - 源码定位:
L230 - 说明:
TODO
- 类型:
-
PRIORITIZE_CHUNK_TOOLTIP_NEARBY- 类型:
Component - 修饰符:
private static final - 源码定位:
L231 - 说明:
TODO
- 类型:
-
prioritizeChunkUpdates- 类型:
OptionInstance<PrioritizeChunkUpdates> - 修饰符:
private final - 源码定位:
L232 - 说明:
TODO
- 类型:
-
resourcePacks- 类型:
List<String> - 修饰符:
public - 源码定位:
L246 - 说明:
TODO
- 类型:
-
incompatibleResourcePacks- 类型:
List<String> - 修饰符:
public - 源码定位:
L247 - 说明:
TODO
- 类型:
-
chatVisibility- 类型:
OptionInstance<ChatVisiblity> - 修饰符:
private final - 源码定位:
L248 - 说明:
TODO
- 类型:
-
chatOpacity- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L261 - 说明:
TODO
- 类型:
-
chatLineSpacing- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L269 - 说明:
TODO
- 类型:
-
MENU_BACKGROUND_BLURRINESS_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L272 - 说明:
TODO
- 类型:
-
BLURRINESS_DEFAULT_VALUE- 类型:
int - 修饰符:
private static final - 源码定位:
L273 - 说明:
TODO
- 类型:
-
menuBackgroundBlurriness- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L274 - 说明:
TODO
- 类型:
-
textBackgroundOpacity- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L282 - 说明:
TODO
- 类型:
-
panoramaSpeed- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L290 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_CONTRAST_MODE- 类型:
Component - 修饰符:
private static final - 源码定位:
L293 - 说明:
TODO
- 类型:
-
highContrast- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L294 - 说明:
TODO
- 类型:
-
HIGH_CONTRAST_BLOCK_OUTLINE_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L307 - 说明:
TODO
- 类型:
-
highContrastBlockOutline- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L308 - 说明:
TODO
- 类型:
-
narratorHotkey- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L311 - 说明:
TODO
- 类型:
-
fullscreenVideoModeString- 类型:
String - 修饰符:
public - 源码定位:
L320 - 说明:
TODO
- 类型:
-
hideServerAddress- 类型:
boolean - 修饰符:
public - 源码定位:
L321 - 说明:
TODO
- 类型:
-
advancedItemTooltips- 类型:
boolean - 修饰符:
public - 源码定位:
L322 - 说明:
TODO
- 类型:
-
pauseOnLostFocus- 类型:
boolean - 修饰符:
public - 源码定位:
L323 - 说明:
TODO
- 类型:
-
modelParts- 类型:
Set<PlayerModelPart> - 修饰符:
private final - 源码定位:
L324 - 说明:
TODO
- 类型:
-
mainHand- 类型:
OptionInstance<HumanoidArm> - 修饰符:
private final - 源码定位:
L325 - 说明:
TODO
- 类型:
-
overrideWidth- 类型:
int - 修饰符:
public - 源码定位:
L333 - 说明:
TODO
- 类型:
-
overrideHeight- 类型:
int - 修饰符:
public - 源码定位:
L334 - 说明:
TODO
- 类型:
-
chatScale- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L335 - 说明:
TODO
- 类型:
-
chatWidth- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L343 - 说明:
TODO
- 类型:
-
chatHeightUnfocused- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L351 - 说明:
TODO
- 类型:
-
chatHeightFocused- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L359 - 说明:
TODO
- 类型:
-
chatDelay- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L367 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_NOTIFICATION_DISPLAY_TIME- 类型:
Component - 修饰符:
private static final - 源码定位:
L378 - 说明:
TODO
- 类型:
-
notificationDisplayTime- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L379 - 说明:
TODO
- 类型:
-
mipmapLevels- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L388 - 说明:
TODO
- 类型:
-
GRAPHICS_TOOLTIP_ANISOTROPIC_FILTERING- 类型:
Component - 修饰符:
private static final - 源码定位:
L396 - 说明:
TODO
- 类型:
-
maxAnisotropyBit- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L397 - 说明:
TODO
- 类型:
-
FILTERING_NONE_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L410 - 说明:
TODO
- 类型:
-
FILTERING_RGSS_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L411 - 说明:
TODO
- 类型:
-
FILTERING_ANISOTROPIC_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L412 - 说明:
TODO
- 类型:
-
textureFiltering- 类型:
OptionInstance<TextureFilteringMethod> - 修饰符:
private final - 源码定位:
L413 - 说明:
TODO
- 类型:
-
useNativeTransport- 类型:
boolean - 修饰符:
private - 源码定位:
L430 - 说明:
TODO
- 类型:
-
attackIndicator- 类型:
OptionInstance<AttackIndicatorStatus> - 修饰符:
private final - 源码定位:
L431 - 说明:
TODO
- 类型:
-
tutorialStep- 类型:
TutorialSteps - 修饰符:
public - 源码定位:
L439 - 说明:
TODO
- 类型:
-
joinedFirstServer- 类型:
boolean - 修饰符:
public - 源码定位:
L440 - 说明:
TODO
- 类型:
-
biomeBlendRadius- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L441 - 说明:
TODO
- 类型:
-
mouseWheelSensitivity- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L448 - 说明:
TODO
- 类型:
-
rawMouseInput- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L457 - 说明:
TODO
- 类型:
-
ALLOW_CURSOR_CHANGES_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L463 - 说明:
TODO
- 类型:
-
allowCursorChanges- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L464 - 说明:
TODO
- 类型:
-
glDebugVerbosity- 类型:
int - 修饰符:
public - 源码定位:
L472 - 说明:
TODO
- 类型:
-
autoJump- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L473 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_ROTATE_WITH_MINECART- 类型:
Component - 修饰符:
private static final - 源码定位:
L474 - 说明:
TODO
- 类型:
-
rotateWithMinecart- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L475 - 说明:
TODO
- 类型:
-
operatorItemsTab- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L478 - 说明:
TODO
- 类型:
-
autoSuggestions- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L479 - 说明:
TODO
- 类型:
-
chatColors- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L480 - 说明:
TODO
- 类型:
-
chatLinks- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L481 - 说明:
TODO
- 类型:
-
chatLinksPrompt- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L482 - 说明:
TODO
- 类型:
-
enableVsync- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L483 - 说明:
TODO
- 类型:
-
entityShadows- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L488 - 说明:
TODO
- 类型:
-
forceUnicodeFont- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L491 - 说明:
TODO
- 类型:
-
japaneseGlyphVariants- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L492 - 说明:
TODO
- 类型:
-
invertXMouse- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L498 - 说明:
TODO
- 类型:
-
invertYMouse- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L499 - 说明:
TODO
- 类型:
-
discreteMouseScroll- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L500 - 说明:
TODO
- 类型:
-
REALMS_NOTIFICATIONS_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L501 - 说明:
TODO
- 类型:
-
realmsNotifications- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L502 - 说明:
TODO
- 类型:
-
ALLOW_SERVER_LISTING_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L505 - 说明:
TODO
- 类型:
-
allowServerListing- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L506 - 说明:
TODO
- 类型:
-
reducedDebugInfo- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L509 - 说明:
TODO
- 类型:
-
soundSourceVolumes- 类型:
Map<SoundSource,OptionInstance<Double>> - 修饰符:
private final - 源码定位:
L512 - 说明:
TODO
- 类型:
-
CLOSED_CAPTIONS_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L515 - 说明:
TODO
- 类型:
-
showSubtitles- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L516 - 说明:
TODO
- 类型:
-
DIRECTIONAL_AUDIO_TOOLTIP_ON- 类型:
Component - 修饰符:
private static final - 源码定位:
L519 - 说明:
TODO
- 类型:
-
DIRECTIONAL_AUDIO_TOOLTIP_OFF- 类型:
Component - 修饰符:
private static final - 源码定位:
L520 - 说明:
TODO
- 类型:
-
directionalAudio- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L521 - 说明:
TODO
- 类型:
-
backgroundForChatOnly- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L531 - 说明:
TODO
- 类型:
-
touchscreen- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L541 - 说明:
TODO
- 类型:
-
fullscreen- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L542 - 说明:
TODO
- 类型:
-
initialExclusiveFullscreen- 类型:
boolean - 修饰符:
private - 源码定位:
L549 - 说明:
TODO
- 类型:
-
TOOLTIP_EXCLUSIVE_FULLSCREEN_WARNING- 类型:
Component - 修饰符:
private static final - 源码定位:
L550 - 说明:
TODO
- 类型:
-
exclusiveFullscreen- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L551 - 说明:
TODO
- 类型:
-
bobView- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L567 - 说明:
TODO
- 类型:
-
KEY_TOGGLE- 类型:
Component - 修饰符:
private static final - 源码定位:
L568 - 说明:
TODO
- 类型:
-
KEY_HOLD- 类型:
Component - 修饰符:
private static final - 源码定位:
L569 - 说明:
TODO
- 类型:
-
toggleCrouch- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L570 - 说明:
TODO
- 类型:
-
toggleSprint- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L573 - 说明:
TODO
- 类型:
-
toggleAttack- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L576 - 说明:
TODO
- 类型:
-
toggleUse- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L579 - 说明:
TODO
- 类型:
-
SPRINT_WINDOW_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L582 - 说明:
TODO
- 类型:
-
sprintWindow- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L583 - 说明:
TODO
- 类型:
-
skipMultiplayerWarning- 类型:
boolean - 修饰符:
public - 源码定位:
L593 - 说明:
TODO
- 类型:
-
CHAT_TOOLTIP_HIDE_MATCHED_NAMES- 类型:
Component - 修饰符:
private static final - 源码定位:
L594 - 说明:
TODO
- 类型:
-
hideMatchedNames- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L595 - 说明:
TODO
- 类型:
-
showAutosaveIndicator- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L598 - 说明:
TODO
- 类型:
-
CHAT_TOOLTIP_ONLY_SHOW_SECURE- 类型:
Component - 修饰符:
private static final - 源码定位:
L599 - 说明:
TODO
- 类型:
-
onlyShowSecureChat- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L600 - 说明:
TODO
- 类型:
-
CHAT_TOOLTIP_SAVE_DRAFTS- 类型:
Component - 修饰符:
private static final - 源码定位:
L603 - 说明:
TODO
- 类型:
-
saveChatDrafts- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L604 - 说明:
TODO
- 类型:
-
keyUp- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L607 - 说明:
TODO
- 类型:
-
keyLeft- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L608 - 说明:
TODO
- 类型:
-
keyDown- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L609 - 说明:
TODO
- 类型:
-
keyRight- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L610 - 说明:
TODO
- 类型:
-
keyJump- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L611 - 说明:
TODO
- 类型:
-
keyShift- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L612 - 说明:
TODO
- 类型:
-
keySprint- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L613 - 说明:
TODO
- 类型:
-
keyInventory- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L614 - 说明:
TODO
- 类型:
-
keySwapOffhand- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L615 - 说明:
TODO
- 类型:
-
keyDrop- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L616 - 说明:
TODO
- 类型:
-
keyUse- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L617 - 说明:
TODO
- 类型:
-
keyAttack- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L618 - 说明:
TODO
- 类型:
-
keyPickItem- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L621 - 说明:
TODO
- 类型:
-
keyChat- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L622 - 说明:
TODO
- 类型:
-
keyPlayerList- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L623 - 说明:
TODO
- 类型:
-
keyCommand- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L624 - 说明:
TODO
- 类型:
-
keySocialInteractions- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L625 - 说明:
TODO
- 类型:
-
keyScreenshot- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L626 - 说明:
TODO
- 类型:
-
keyTogglePerspective- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L627 - 说明:
TODO
- 类型:
-
keySmoothCamera- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L628 - 说明:
TODO
- 类型:
-
keyFullscreen- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L629 - 说明:
TODO
- 类型:
-
keyAdvancements- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L630 - 说明:
TODO
- 类型:
-
keyQuickActions- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L631 - 说明:
TODO
- 类型:
-
keyToggleGui- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L632 - 说明:
TODO
- 类型:
-
keyToggleSpectatorShaderEffects- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L633 - 说明:
TODO
- 类型:
-
keyHotbarSlots- 类型:
KeyMapping[] - 修饰符:
public final - 源码定位:
L634 - 说明:
TODO
- 类型:
-
keySaveHotbarActivator- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L645 - 说明:
TODO
- 类型:
-
keyLoadHotbarActivator- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L646 - 说明:
TODO
- 类型:
-
keySpectatorOutlines- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L647 - 说明:
TODO
- 类型:
-
keySpectatorHotbar- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L648 - 说明:
TODO
- 类型:
-
keyDebugOverlay- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L649 - 说明:
TODO
- 类型:
-
keyDebugModifier- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L650 - 说明:
TODO
- 类型:
-
keyDebugCrash- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L651 - 说明:
TODO
- 类型:
-
keyDebugReloadChunk- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L652 - 说明:
TODO
- 类型:
-
keyDebugShowHitboxes- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L653 - 说明:
TODO
- 类型:
-
keyDebugClearChat- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L654 - 说明:
TODO
- 类型:
-
keyDebugShowChunkBorders- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L655 - 说明:
TODO
- 类型:
-
keyDebugShowAdvancedTooltips- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L656 - 说明:
TODO
- 类型:
-
keyDebugCopyRecreateCommand- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L659 - 说明:
TODO
- 类型:
-
keyDebugSpectate- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L662 - 说明:
TODO
- 类型:
-
keyDebugSwitchGameMode- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L663 - 说明:
TODO
- 类型:
-
keyDebugDebugOptions- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L664 - 说明:
TODO
- 类型:
-
keyDebugFocusPause- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L665 - 说明:
TODO
- 类型:
-
keyDebugDumpDynamicTextures- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L666 - 说明:
TODO
- 类型:
-
keyDebugReloadResourcePacks- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L669 - 说明:
TODO
- 类型:
-
keyDebugProfiling- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L672 - 说明:
TODO
- 类型:
-
keyDebugCopyLocation- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L673 - 说明:
TODO
- 类型:
-
keyDebugDumpVersion- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L674 - 说明:
TODO
- 类型:
-
keyDebugPofilingChart- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L675 - 说明:
TODO
- 类型:
-
keyDebugFpsCharts- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L676 - 说明:
TODO
- 类型:
-
keyDebugNetworkCharts- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L677 - 说明:
TODO
- 类型:
-
keyDebugLightmapTexture- 类型:
KeyMapping - 修饰符:
public final - 源码定位:
L678 - 说明:
TODO
- 类型:
-
debugKeys- 类型:
KeyMapping[] - 修饰符:
public final - 源码定位:
L679 - 说明:
TODO
- 类型:
-
keyMappings- 类型:
KeyMapping[] - 修饰符:
public final - 源码定位:
L701 - 说明:
TODO
- 类型:
-
minecraft- 类型:
Minecraft - 修饰符:
protected - 源码定位:
L740 - 说明:
TODO
- 类型:
-
optionsFile- 类型:
File - 修饰符:
private final - 源码定位:
L741 - 说明:
TODO
- 类型:
-
hideGui- 类型:
boolean - 修饰符:
public - 源码定位:
L742 - 说明:
TODO
- 类型:
-
cameraType- 类型:
CameraType - 修饰符:
private - 源码定位:
L743 - 说明:
TODO
- 类型:
-
lastMpIp- 类型:
String - 修饰符:
public - 源码定位:
L744 - 说明:
TODO
- 类型:
-
smoothCamera- 类型:
boolean - 修饰符:
public - 源码定位:
L745 - 说明:
TODO
- 类型:
-
fov- 类型:
OptionInstance<Integer> - 修饰符:
private final default - 源码定位:
L746 - 说明:
TODO
- 类型:
-
TELEMETRY_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L761 - 说明:
TODO
- 类型:
-
telemetryOptInExtra- 类型:
OptionInstance<Boolean> - 修饰符:
private final - 源码定位:
L764 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_SCREEN_EFFECT- 类型:
Component - 修饰符:
private static final - 源码定位:
L780 - 说明:
TODO
- 类型:
-
screenEffectScale- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L781 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_FOV_EFFECT- 类型:
Component - 修饰符:
private static final - 源码定位:
L789 - 说明:
TODO
- 类型:
-
fovEffectScale- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L790 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_DARKNESS_EFFECT- 类型:
Component - 修饰符:
private static final - 源码定位:
L799 - 说明:
TODO
- 类型:
-
darknessEffectScale- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L800 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_GLINT_SPEED- 类型:
Component - 修饰符:
private static final - 源码定位:
L808 - 说明:
TODO
- 类型:
-
glintSpeed- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L809 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_GLINT_STRENGTH- 类型:
Component - 修饰符:
private static final - 源码定位:
L817 - 说明:
TODO
- 类型:
-
glintStrength- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L818 - 说明:
TODO
- 类型:
-
ACCESSIBILITY_TOOLTIP_DAMAGE_TILT_STRENGTH- 类型:
Component - 修饰符:
private static final - 源码定位:
L826 - 说明:
TODO
- 类型:
-
damageTiltStrength- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L827 - 说明:
TODO
- 类型:
-
gamma- 类型:
OptionInstance<Double> - 修饰符:
private final - 源码定位:
L835 - 说明:
TODO
- 类型:
-
AUTO_GUI_SCALE- 类型:
int - 修饰符:
public static final - 源码定位:
L854 - 说明:
TODO
- 类型:
-
MAX_GUI_SCALE_INCLUSIVE- 类型:
int - 修饰符:
private static final - 源码定位:
L855 - 说明:
TODO
- 类型:
-
guiScale- 类型:
OptionInstance<Integer> - 修饰符:
private final - 源码定位:
L856 - 说明:
TODO
- 类型:
-
particles- 类型:
OptionInstance<ParticleStatus> - 修饰符:
private final - 源码定位:
L867 - 说明:
TODO
- 类型:
-
narrator- 类型:
OptionInstance<NarratorStatus> - 修饰符:
private final - 源码定位:
L875 - 说明:
TODO
- 类型:
-
languageCode- 类型:
String - 修饰符:
public - 源码定位:
L883 - 说明:
TODO
- 类型:
-
soundDevice- 类型:
OptionInstance<String> - 修饰符:
private final - 源码定位:
L884 - 说明:
TODO
- 类型:
-
onboardAccessibility- 类型:
boolean - 修饰符:
public - 源码定位:
L912 - 说明:
TODO
- 类型:
-
MUSIC_FREQUENCY_TOOLTIP- 类型:
Component - 修饰符:
private static final - 源码定位:
L913 - 说明:
TODO
- 类型:
-
musicFrequency- 类型:
OptionInstance<MusicManager.MusicFrequency> - 修饰符:
private final - 源码定位:
L914 - 说明:
TODO
- 类型:
-
musicToast- 类型:
OptionInstance<MusicToastDisplayState> - 修饰符:
private final - 源码定位:
L922 - 说明:
TODO
- 类型:
-
syncWrites- 类型:
boolean - 修饰符:
public - 源码定位:
L930 - 说明:
TODO
- 类型:
-
startedCleanly- 类型:
boolean - 修饰符:
public - 源码定位:
L931 - 说明:
TODO
- 类型:
内部类/嵌套类型
-
net.minecraft.client.Options.FieldAccess- 类型:
interface - 修饰符:
private - 源码定位:
L1937 - 说明:
TODO
- 类型:
-
net.minecraft.client.Options.OptionAccess- 类型:
interface - 修饰符:
private - 源码定位:
L1950 - 说明:
TODO
- 类型:
构造器
public Options(Minecraft minecraft, File workingDirectory) @ L1406
- 构造器名:Options
- 源码定位:L1406
- 修饰符:public
参数:
- minecraft: Minecraft
- workingDirectory: File
说明:
TODO
方法
下面的方法块按源码顺序生成。
public static boolean isSoundDeviceDefault(String deviceName) @ L933
- 方法名:isSoundDeviceDefault
- 源码定位:L933
- 返回类型:boolean
- 修饰符:public static
参数:
- deviceName: String
说明:
TODO
private static void operateOnLevelRenderer(Consumer<LevelRenderer> consumer) @ L937
- 方法名:operateOnLevelRenderer
- 源码定位:L937
- 返回类型:void
- 修饰符:private static
参数:
- consumer: Consumer
说明:
TODO
public OptionInstance<Boolean> darkMojangStudiosBackground() @ L944
- 方法名:darkMojangStudiosBackground
- 源码定位:L944
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> hideLightningFlash() @ L948
- 方法名:hideLightningFlash
- 源码定位:L948
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> hideSplashTexts() @ L952
- 方法名:hideSplashTexts
- 源码定位:L952
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> sensitivity() @ L956
- 方法名:sensitivity
- 源码定位:L956
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> renderDistance() @ L960
- 方法名:renderDistance
- 源码定位:L960
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> simulationDistance() @ L964
- 方法名:simulationDistance
- 源码定位:L964
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> entityDistanceScaling() @ L968
- 方法名:entityDistanceScaling
- 源码定位:L968
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> framerateLimit() @ L972
- 方法名:framerateLimit
- 源码定位:L972
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public void applyGraphicsPreset(GraphicsPreset value) @ L976
- 方法名:applyGraphicsPreset
- 源码定位:L976
- 返回类型:void
- 修饰符:public
参数:
- value: GraphicsPreset
说明:
TODO
public OptionInstance<GraphicsPreset> graphicsPreset() @ L982
- 方法名:graphicsPreset
- 源码定位:L982
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<InactivityFpsLimit> inactivityFpsLimit() @ L986
- 方法名:inactivityFpsLimit
- 源码定位:L986
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<CloudStatus> cloudStatus() @ L990
- 方法名:cloudStatus
- 源码定位:L990
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> cloudRange() @ L994
- 方法名:cloudRange
- 源码定位:L994
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> weatherRadius() @ L998
- 方法名:weatherRadius
- 源码定位:L998
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> cutoutLeaves() @ L1002
- 方法名:cutoutLeaves
- 源码定位:L1002
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> vignette() @ L1006
- 方法名:vignette
- 源码定位:L1006
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> improvedTransparency() @ L1010
- 方法名:improvedTransparency
- 源码定位:L1010
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> ambientOcclusion() @ L1014
- 方法名:ambientOcclusion
- 源码定位:L1014
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> chunkSectionFadeInTime() @ L1018
- 方法名:chunkSectionFadeInTime
- 源码定位:L1018
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<PrioritizeChunkUpdates> prioritizeChunkUpdates() @ L1022
- 方法名:prioritizeChunkUpdates
- 源码定位:L1022
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public void updateResourcePacks(PackRepository packRepository) @ L1026
- 方法名:updateResourcePacks
- 源码定位:L1026
- 返回类型:void
- 修饰符:public
参数:
- packRepository: PackRepository
说明:
TODO
public OptionInstance<ChatVisiblity> chatVisibility() @ L1047
- 方法名:chatVisibility
- 源码定位:L1047
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> chatOpacity() @ L1051
- 方法名:chatOpacity
- 源码定位:L1051
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> chatLineSpacing() @ L1055
- 方法名:chatLineSpacing
- 源码定位:L1055
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> menuBackgroundBlurriness() @ L1059
- 方法名:menuBackgroundBlurriness
- 源码定位:L1059
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public int getMenuBackgroundBlurriness() @ L1063
- 方法名:getMenuBackgroundBlurriness
- 源码定位:L1063
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> textBackgroundOpacity() @ L1067
- 方法名:textBackgroundOpacity
- 源码定位:L1067
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> panoramaSpeed() @ L1071
- 方法名:panoramaSpeed
- 源码定位:L1071
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> highContrast() @ L1075
- 方法名:highContrast
- 源码定位:L1075
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> highContrastBlockOutline() @ L1079
- 方法名:highContrastBlockOutline
- 源码定位:L1079
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> narratorHotkey() @ L1083
- 方法名:narratorHotkey
- 源码定位:L1083
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<HumanoidArm> mainHand() @ L1087
- 方法名:mainHand
- 源码定位:L1087
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> chatScale() @ L1091
- 方法名:chatScale
- 源码定位:L1091
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> chatWidth() @ L1095
- 方法名:chatWidth
- 源码定位:L1095
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> chatHeightUnfocused() @ L1099
- 方法名:chatHeightUnfocused
- 源码定位:L1099
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> chatHeightFocused() @ L1103
- 方法名:chatHeightFocused
- 源码定位:L1103
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> chatDelay() @ L1107
- 方法名:chatDelay
- 源码定位:L1107
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> notificationDisplayTime() @ L1111
- 方法名:notificationDisplayTime
- 源码定位:L1111
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> mipmapLevels() @ L1115
- 方法名:mipmapLevels
- 源码定位:L1115
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> maxAnisotropyBit() @ L1119
- 方法名:maxAnisotropyBit
- 源码定位:L1119
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public int maxAnisotropyValue() @ L1123
- 方法名:maxAnisotropyValue
- 源码定位:L1123
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<TextureFilteringMethod> textureFiltering() @ L1127
- 方法名:textureFiltering
- 源码定位:L1127
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<AttackIndicatorStatus> attackIndicator() @ L1131
- 方法名:attackIndicator
- 源码定位:L1131
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> biomeBlendRadius() @ L1135
- 方法名:biomeBlendRadius
- 源码定位:L1135
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
private static double logMouse(int value) @ L1139
- 方法名:logMouse
- 源码定位:L1139
- 返回类型:double
- 修饰符:private static
参数:
- value: int
说明:
TODO
private static int unlogMouse(double value) @ L1143
- 方法名:unlogMouse
- 源码定位:L1143
- 返回类型:int
- 修饰符:private static
参数:
- value: double
说明:
TODO
public OptionInstance<Double> mouseWheelSensitivity() @ L1147
- 方法名:mouseWheelSensitivity
- 源码定位:L1147
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> rawMouseInput() @ L1151
- 方法名:rawMouseInput
- 源码定位:L1151
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> allowCursorChanges() @ L1155
- 方法名:allowCursorChanges
- 源码定位:L1155
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> autoJump() @ L1159
- 方法名:autoJump
- 源码定位:L1159
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> rotateWithMinecart() @ L1163
- 方法名:rotateWithMinecart
- 源码定位:L1163
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> operatorItemsTab() @ L1167
- 方法名:operatorItemsTab
- 源码定位:L1167
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> autoSuggestions() @ L1171
- 方法名:autoSuggestions
- 源码定位:L1171
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> chatColors() @ L1175
- 方法名:chatColors
- 源码定位:L1175
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> chatLinks() @ L1179
- 方法名:chatLinks
- 源码定位:L1179
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> chatLinksPrompt() @ L1183
- 方法名:chatLinksPrompt
- 源码定位:L1183
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> enableVsync() @ L1187
- 方法名:enableVsync
- 源码定位:L1187
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> entityShadows() @ L1191
- 方法名:entityShadows
- 源码定位:L1191
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
private static void updateFontOptions() @ L1195
- 方法名:updateFontOptions
- 源码定位:L1195
- 返回类型:void
- 修饰符:private static
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> forceUnicodeFont() @ L1203
- 方法名:forceUnicodeFont
- 源码定位:L1203
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
private static boolean japaneseGlyphVariantsDefault() @ L1207
- 方法名:japaneseGlyphVariantsDefault
- 源码定位:L1207
- 返回类型:boolean
- 修饰符:private static
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> japaneseGlyphVariants() @ L1211
- 方法名:japaneseGlyphVariants
- 源码定位:L1211
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> invertMouseX() @ L1215
- 方法名:invertMouseX
- 源码定位:L1215
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> invertMouseY() @ L1219
- 方法名:invertMouseY
- 源码定位:L1219
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> discreteMouseScroll() @ L1223
- 方法名:discreteMouseScroll
- 源码定位:L1223
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> realmsNotifications() @ L1227
- 方法名:realmsNotifications
- 源码定位:L1227
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> allowServerListing() @ L1231
- 方法名:allowServerListing
- 源码定位:L1231
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> reducedDebugInfo() @ L1235
- 方法名:reducedDebugInfo
- 源码定位:L1235
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public final float getFinalSoundSourceVolume(SoundSource source) @ L1239
- 方法名:getFinalSoundSourceVolume
- 源码定位:L1239
- 返回类型:float
- 修饰符:public final
参数:
- source: SoundSource
说明:
TODO
public final float getSoundSourceVolume(SoundSource source) @ L1245
- 方法名:getSoundSourceVolume
- 源码定位:L1245
- 返回类型:float
- 修饰符:public final
参数:
- source: SoundSource
说明:
TODO
public final OptionInstance<Double> getSoundSourceOptionInstance(SoundSource source) @ L1249
- 方法名:getSoundSourceOptionInstance
- 源码定位:L1249
- 返回类型:OptionInstance
- 修饰符:public final
参数:
- source: SoundSource
说明:
TODO
private OptionInstance<Double> createSoundSliderOptionInstance(String captionId, SoundSource category) @ L1253
- 方法名:createSoundSliderOptionInstance
- 源码定位:L1253
- 返回类型:OptionInstance
- 修饰符:private
参数:
- captionId: String
- category: SoundSource
说明:
TODO
public OptionInstance<Boolean> showSubtitles() @ L1268
- 方法名:showSubtitles
- 源码定位:L1268
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> directionalAudio() @ L1272
- 方法名:directionalAudio
- 源码定位:L1272
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> backgroundForChatOnly() @ L1276
- 方法名:backgroundForChatOnly
- 源码定位:L1276
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> touchscreen() @ L1280
- 方法名:touchscreen
- 源码定位:L1280
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> fullscreen() @ L1284
- 方法名:fullscreen
- 源码定位:L1284
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> exclusiveFullscreen() @ L1288
- 方法名:exclusiveFullscreen
- 源码定位:L1288
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> bobView() @ L1292
- 方法名:bobView
- 源码定位:L1292
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> toggleCrouch() @ L1296
- 方法名:toggleCrouch
- 源码定位:L1296
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> toggleSprint() @ L1300
- 方法名:toggleSprint
- 源码定位:L1300
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> toggleAttack() @ L1304
- 方法名:toggleAttack
- 源码定位:L1304
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> toggleUse() @ L1308
- 方法名:toggleUse
- 源码定位:L1308
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> sprintWindow() @ L1312
- 方法名:sprintWindow
- 源码定位:L1312
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> hideMatchedNames() @ L1316
- 方法名:hideMatchedNames
- 源码定位:L1316
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> showAutosaveIndicator() @ L1320
- 方法名:showAutosaveIndicator
- 源码定位:L1320
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> onlyShowSecureChat() @ L1324
- 方法名:onlyShowSecureChat
- 源码定位:L1324
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> saveChatDrafts() @ L1328
- 方法名:saveChatDrafts
- 源码定位:L1328
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
private void setGraphicsPresetToCustom() @ L1332
- 方法名:setGraphicsPresetToCustom
- 源码定位:L1332
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
public OptionInstance<Integer> fov() @ L1341
- 方法名:fov
- 源码定位:L1341
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Boolean> telemetryOptInExtra() @ L1345
- 方法名:telemetryOptInExtra
- 源码定位:L1345
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> screenEffectScale() @ L1349
- 方法名:screenEffectScale
- 源码定位:L1349
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> fovEffectScale() @ L1353
- 方法名:fovEffectScale
- 源码定位:L1353
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> darknessEffectScale() @ L1357
- 方法名:darknessEffectScale
- 源码定位:L1357
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> glintSpeed() @ L1361
- 方法名:glintSpeed
- 源码定位:L1361
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> glintStrength() @ L1365
- 方法名:glintStrength
- 源码定位:L1365
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> damageTiltStrength() @ L1369
- 方法名:damageTiltStrength
- 源码定位:L1369
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Double> gamma() @ L1373
- 方法名:gamma
- 源码定位:L1373
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<Integer> guiScale() @ L1377
- 方法名:guiScale
- 源码定位:L1377
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<ParticleStatus> particles() @ L1381
- 方法名:particles
- 源码定位:L1381
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<NarratorStatus> narrator() @ L1385
- 方法名:narrator
- 源码定位:L1385
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<String> soundDevice() @ L1389
- 方法名:soundDevice
- 源码定位:L1389
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public void onboardingAccessibilityFinished() @ L1393
- 方法名:onboardingAccessibilityFinished
- 源码定位:L1393
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<MusicManager.MusicFrequency> musicFrequency() @ L1398
- 方法名:musicFrequency
- 源码定位:L1398
- 返回类型:OptionInstance<MusicManager.MusicFrequency>
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionInstance<MusicToastDisplayState> musicToast() @ L1402
- 方法名:musicToast
- 源码定位:L1402
- 返回类型:OptionInstance
- 修饰符:public
参数:
- 无
说明:
TODO
public float getBackgroundOpacity(float defaultOpacity) @ L1434
- 方法名:getBackgroundOpacity
- 源码定位:L1434
- 返回类型:float
- 修饰符:public
参数:
- defaultOpacity: float
说明:
TODO
public int getBackgroundColor(float defaultOpacity) @ L1438
- 方法名:getBackgroundColor
- 源码定位:L1438
- 返回类型:int
- 修饰符:public
参数:
- defaultOpacity: float
说明:
TODO
public int getBackgroundColor(int defaultColor) @ L1442
- 方法名:getBackgroundColor
- 源码定位:L1442
- 返回类型:int
- 修饰符:public
参数:
- defaultColor: int
说明:
TODO
private void processDumpedOptions(Options.OptionAccess access) @ L1446
- 方法名:processDumpedOptions
- 源码定位:L1446
- 返回类型:void
- 修饰符:private
参数:
- access: Options.OptionAccess
说明:
TODO
private void processOptions(Options.FieldAccess access) @ L1486
- 方法名:processOptions
- 源码定位:L1486
- 返回类型:void
- 修饰符:private
参数:
- access: Options.FieldAccess
说明:
TODO
public void load() @ L1581
- 方法名:load
- 源码定位:L1581
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
private static boolean isTrue(String value) @ L1688
- 方法名:isTrue
- 源码定位:L1688
- 返回类型:boolean
- 修饰符:private static
参数:
- value: String
说明:
TODO
private static boolean isFalse(String value) @ L1692
- 方法名:isFalse
- 源码定位:L1692
- 返回类型:boolean
- 修饰符:private static
参数:
- value: String
说明:
TODO
private CompoundTag dataFix(CompoundTag tag) @ L1696
- 方法名:dataFix
- 源码定位:L1696
- 返回类型:CompoundTag
- 修饰符:private
参数:
- tag: CompoundTag
说明:
TODO
public void save() @ L1707
- 方法名:save
- 源码定位:L1707
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
private String getFullscreenVideoModeString() @ L1779
- 方法名:getFullscreenVideoModeString
- 源码定位:L1779
- 返回类型:String
- 修饰符:private
参数:
- 无
说明:
TODO
public ClientInformation buildPlayerInformation() @ L1788
- 方法名:buildPlayerInformation
- 源码定位:L1788
- 返回类型:ClientInformation
- 修饰符:public
参数:
- 无
说明:
TODO
public void broadcastOptions() @ L1808
- 方法名:broadcastOptions
- 源码定位:L1808
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void setModelPart(PlayerModelPart part, boolean visible) @ L1814
- 方法名:setModelPart
- 源码定位:L1814
- 返回类型:void
- 修饰符:public
参数:
- part: PlayerModelPart
- visible: boolean
说明:
TODO
public boolean isModelPartEnabled(PlayerModelPart part) @ L1822
- 方法名:isModelPartEnabled
- 源码定位:L1822
- 返回类型:boolean
- 修饰符:public
参数:
- part: PlayerModelPart
说明:
TODO
public CloudStatus getCloudStatus() @ L1826
- 方法名:getCloudStatus
- 源码定位:L1826
- 返回类型:CloudStatus
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean useNativeTransport() @ L1830
- 方法名:useNativeTransport
- 源码定位:L1830
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public void loadSelectedResourcePacks(PackRepository repository) @ L1834
- 方法名:loadSelectedResourcePacks
- 源码定位:L1834
- 返回类型:void
- 修饰符:public
参数:
- repository: PackRepository
说明:
TODO
public CameraType getCameraType() @ L1862
- 方法名:getCameraType
- 源码定位:L1862
- 返回类型:CameraType
- 修饰符:public
参数:
- 无
说明:
TODO
public void setCameraType(CameraType cameraType) @ L1866
- 方法名:setCameraType
- 源码定位:L1866
- 返回类型:void
- 修饰符:public
参数:
- cameraType: CameraType
说明:
TODO
private static List<String> readListOfStrings(String value) @ L1870
- 方法名:readListOfStrings
- 源码定位:L1870
- 返回类型:List
- 修饰符:private static
参数:
- value: String
说明:
TODO
public File getFile() @ L1875
- 方法名:getFile
- 源码定位:L1875
- 返回类型:File
- 修饰符:public
参数:
- 无
说明:
TODO
public String dumpOptionsForReport() @ L1879
- 方法名:dumpOptionsForReport
- 源码定位:L1879
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
public void setServerRenderDistance(int serverRenderDistance) @ L1904
- 方法名:setServerRenderDistance
- 源码定位:L1904
- 返回类型:void
- 修饰符:public
参数:
- serverRenderDistance: int
说明:
TODO
public int getEffectiveRenderDistance() @ L1908
- 方法名:getEffectiveRenderDistance
- 源码定位:L1908
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
private static Component pixelValueLabel(Component caption, int value) @ L1912
- 方法名:pixelValueLabel
- 源码定位:L1912
- 返回类型:Component
- 修饰符:private static
参数:
- caption: Component
- value: int
说明:
TODO
private static Component percentValueLabel(Component caption, double value) @ L1916
- 方法名:percentValueLabel
- 源码定位:L1916
- 返回类型:Component
- 修饰符:private static
参数:
- caption: Component
- value: double
说明:
TODO
public static Component genericValueLabel(Component caption, Component value) @ L1920
- 方法名:genericValueLabel
- 源码定位:L1920
- 返回类型:Component
- 修饰符:public static
参数:
- caption: Component
- value: Component
说明:
TODO
public static Component genericValueLabel(Component caption, int value) @ L1924
- 方法名:genericValueLabel
- 源码定位:L1924
- 返回类型:Component
- 修饰符:public static
参数:
- caption: Component
- value: int
说明:
TODO
public static Component genericValueOrOffLabel(Component caption, int value) @ L1928
- 方法名:genericValueOrOffLabel
- 源码定位:L1928
- 返回类型:Component
- 修饰符:public static
参数:
- caption: Component
- value: int
说明:
TODO
private static Component percentValueOrOffLabel(Component caption, double value) @ L1932
- 方法名:percentValueOrOffLabel
- 源码定位:L1932
- 返回类型:Component
- 修饰符:private static
参数:
- caption: Component
- value: double
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class Options {
private static final Logger LOGGER = LogUtils.getLogger();
private static final Gson GSON = new Gson();
private static final TypeToken<List<String>> LIST_OF_STRINGS_TYPE = new TypeToken<List<String>>() {};
public static final int RENDER_DISTANCE_SHORT = 4;
public static final int RENDER_DISTANCE_FAR = 12;
public static final int RENDER_DISTANCE_REALLY_FAR = 16;
public static final int RENDER_DISTANCE_EXTREME = 32;
private static final Splitter OPTION_SPLITTER = Splitter.on(':').limit(2);
private static final String DEFAULT_SOUND_DEVICE = "";
private static final Component TOOLTIP_NEEDS_RESTART = Component.translatable("options.needsRestart");
private static final Component ACCESSIBILITY_TOOLTIP_DARK_MOJANG_BACKGROUND = Component.translatable("options.darkMojangStudiosBackgroundColor.tooltip");
private final OptionInstance<Boolean> darkMojangStudiosBackground = OptionInstance.createBoolean(
"options.darkMojangStudiosBackgroundColor", OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_DARK_MOJANG_BACKGROUND), false
);
private static final Component ACCESSIBILITY_TOOLTIP_HIDE_LIGHTNING_FLASHES = Component.translatable("options.hideLightningFlashes.tooltip");
private final OptionInstance<Boolean> hideLightningFlash = OptionInstance.createBoolean(
"options.hideLightningFlashes", OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_HIDE_LIGHTNING_FLASHES), false
);
private static final Component ACCESSIBILITY_TOOLTIP_HIDE_SPLASH_TEXTS = Component.translatable("options.hideSplashTexts.tooltip");
private final OptionInstance<Boolean> hideSplashTexts = OptionInstance.createBoolean(
"options.hideSplashTexts", OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_HIDE_SPLASH_TEXTS), false
);
private final OptionInstance<Double> sensitivity = new OptionInstance<>("options.sensitivity", OptionInstance.noTooltip(), (caption, value) -> {
if (value == 0.0) {
return genericValueLabel(caption, Component.translatable("options.sensitivity.min"));
} else {
return value == 1.0 ? genericValueLabel(caption, Component.translatable("options.sensitivity.max")) : percentValueLabel(caption, 2.0 * value);
}
}, OptionInstance.UnitDouble.INSTANCE, 0.5, value -> {});
private final OptionInstance<Integer> renderDistance;
private final OptionInstance<Integer> simulationDistance;
private int serverRenderDistance = 0;
private final OptionInstance<Double> entityDistanceScaling = new OptionInstance<>(
"options.entityDistanceScaling",
OptionInstance.noTooltip(),
Options::percentValueLabel,
new OptionInstance.IntRange(2, 20).xmap(value -> value / 4.0, value -> (int)(value * 4.0), true),
Codec.doubleRange(0.5, 5.0),
1.0,
value -> this.setGraphicsPresetToCustom()
);
public static final int UNLIMITED_FRAMERATE_CUTOFF = 260;
private final OptionInstance<Integer> framerateLimit = new OptionInstance<>(
"options.framerateLimit",
OptionInstance.noTooltip(),
(caption, value) -> value == 260
? genericValueLabel(caption, Component.translatable("options.framerateLimit.max"))
: genericValueLabel(caption, Component.translatable("options.framerate", value)),
new OptionInstance.IntRange(1, 26).xmap(value -> value * 10, value -> value / 10, true),
Codec.intRange(10, 260),
120,
value -> Minecraft.getInstance().getFramerateLimitTracker().setFramerateLimit(value)
);
private boolean isApplyingGraphicsPreset;
private final OptionInstance<GraphicsPreset> graphicsPreset = new OptionInstance<>(
"options.graphics.preset",
OptionInstance.cachedConstantTooltip(Component.translatable("options.graphics.preset.tooltip")),
(caption, value) -> genericValueLabel(caption, Component.translatable(value.getKey())),
new OptionInstance.SliderableEnum<>(List.of(GraphicsPreset.values()), GraphicsPreset.CODEC),
GraphicsPreset.CODEC,
GraphicsPreset.FANCY,
this::applyGraphicsPreset
);
private static final Component INACTIVITY_FPS_LIMIT_TOOLTIP_MINIMIZED = Component.translatable("options.inactivityFpsLimit.minimized.tooltip");
private static final Component INACTIVITY_FPS_LIMIT_TOOLTIP_AFK = Component.translatable("options.inactivityFpsLimit.afk.tooltip");
private final OptionInstance<InactivityFpsLimit> inactivityFpsLimit = new OptionInstance<>(
"options.inactivityFpsLimit",
value -> {
return switch (value) {
case MINIMIZED -> Tooltip.create(INACTIVITY_FPS_LIMIT_TOOLTIP_MINIMIZED);
case AFK -> Tooltip.create(INACTIVITY_FPS_LIMIT_TOOLTIP_AFK);
};
},
(caption, value) -> value.caption(),
new OptionInstance.Enum<>(Arrays.asList(InactivityFpsLimit.values()), InactivityFpsLimit.CODEC),
InactivityFpsLimit.AFK,
value -> {}
);
private final OptionInstance<CloudStatus> cloudStatus = new OptionInstance<>(
"options.renderClouds",
OptionInstance.noTooltip(),
(caption, value) -> value.caption(),
new OptionInstance.Enum<>(
Arrays.asList(CloudStatus.values()), Codec.withAlternative(CloudStatus.CODEC, Codec.BOOL, b -> b ? CloudStatus.FANCY : CloudStatus.OFF)
),
CloudStatus.FANCY,
value -> this.setGraphicsPresetToCustom()
);
private final OptionInstance<Integer> cloudRange = new OptionInstance<>(
"options.renderCloudsDistance",
OptionInstance.noTooltip(),
(caption, value) -> genericValueLabel(caption, Component.translatable("options.chunks", value)),
new OptionInstance.IntRange(2, 128, true),
128,
value -> {
operateOnLevelRenderer(levelRenderer -> levelRenderer.getCloudRenderer().markForRebuild());
this.setGraphicsPresetToCustom();
}
);
private static final Component GRAPHICS_TOOLTIP_WEATHER_RADIUS = Component.translatable("options.weatherRadius.tooltip");
private final OptionInstance<Integer> weatherRadius = new OptionInstance<>(
"options.weatherRadius",
OptionInstance.cachedConstantTooltip(GRAPHICS_TOOLTIP_WEATHER_RADIUS),
(caption, value) -> genericValueLabel(caption, Component.translatable("options.blocks", value)),
new OptionInstance.IntRange(3, 10, true),
10,
ignored -> this.setGraphicsPresetToCustom()
);
private static final Component GRAPHICS_TOOLTIP_CUTOUT_LEAVES = Component.translatable("options.cutoutLeaves.tooltip");
private final OptionInstance<Boolean> cutoutLeaves = OptionInstance.createBoolean(
"options.cutoutLeaves", OptionInstance.cachedConstantTooltip(GRAPHICS_TOOLTIP_CUTOUT_LEAVES), true, ignored -> {
operateOnLevelRenderer(LevelRenderer::allChanged);
this.setGraphicsPresetToCustom();
}
);
private static final Component GRAPHICS_TOOLTIP_VIGNETTE = Component.translatable("options.vignette.tooltip");
private final OptionInstance<Boolean> vignette = OptionInstance.createBoolean(
"options.vignette", OptionInstance.cachedConstantTooltip(GRAPHICS_TOOLTIP_VIGNETTE), true
);
private static final Component GRAPHICS_TOOLTIP_IMPROVED_TRANSPARENCY = Component.translatable("options.improvedTransparency.tooltip");
private final OptionInstance<Boolean> improvedTransparency = OptionInstance.createBoolean(
"options.improvedTransparency", OptionInstance.cachedConstantTooltip(GRAPHICS_TOOLTIP_IMPROVED_TRANSPARENCY), false, value -> {
Minecraft minecraftx = Minecraft.getInstance();
GpuWarnlistManager gpuWarnlistManager = minecraftx.getGpuWarnlistManager();
if (!this.isApplyingGraphicsPreset && value && gpuWarnlistManager.willShowWarning()) {
gpuWarnlistManager.showWarning();
} else {
operateOnLevelRenderer(LevelRenderer::allChanged);
this.setGraphicsPresetToCustom();
}
}
);
private final OptionInstance<Boolean> ambientOcclusion = OptionInstance.createBoolean("options.ao", true, value -> {
operateOnLevelRenderer(LevelRenderer::allChanged);
this.setGraphicsPresetToCustom();
});
private static final Component GRAPHICS_TOOLTIP_CHUNK_FADE = Component.translatable("options.chunkFade.tooltip");
private final OptionInstance<Double> chunkSectionFadeInTime = new OptionInstance<>(
"options.chunkFade",
OptionInstance.cachedConstantTooltip(GRAPHICS_TOOLTIP_CHUNK_FADE),
(caption, value) -> value <= 0.0
? Component.translatable("options.chunkFade.none")
: Component.translatable("options.chunkFade.seconds", String.format(Locale.ROOT, "%.2f", value)),
new OptionInstance.IntRange(0, 40).xmap(value -> value / 20.0, value -> (int)(value * 20.0), true),
Codec.doubleRange(0.0, 2.0),
0.75,
value -> {}
);
private static final Component PRIORITIZE_CHUNK_TOOLTIP_NONE = Component.translatable("options.prioritizeChunkUpdates.none.tooltip");
private static final Component PRIORITIZE_CHUNK_TOOLTIP_PLAYER_AFFECTED = Component.translatable("options.prioritizeChunkUpdates.byPlayer.tooltip");
private static final Component PRIORITIZE_CHUNK_TOOLTIP_NEARBY = Component.translatable("options.prioritizeChunkUpdates.nearby.tooltip");
private final OptionInstance<PrioritizeChunkUpdates> prioritizeChunkUpdates = new OptionInstance<>(
"options.prioritizeChunkUpdates",
value -> {
return switch (value) {
case NONE -> Tooltip.create(PRIORITIZE_CHUNK_TOOLTIP_NONE);
case PLAYER_AFFECTED -> Tooltip.create(PRIORITIZE_CHUNK_TOOLTIP_PLAYER_AFFECTED);
case NEARBY -> Tooltip.create(PRIORITIZE_CHUNK_TOOLTIP_NEARBY);
};
},
(caption, value) -> value.caption(),
new OptionInstance.Enum<>(Arrays.asList(PrioritizeChunkUpdates.values()), PrioritizeChunkUpdates.LEGACY_CODEC),
PrioritizeChunkUpdates.NONE,
value -> this.setGraphicsPresetToCustom()
);
public List<String> resourcePacks = Lists.newArrayList();
public List<String> incompatibleResourcePacks = Lists.newArrayList();
private final OptionInstance<ChatVisiblity> chatVisibility = new OptionInstance<>(
"options.chat.visibility",
OptionInstance.noTooltip(),
(caption, value) -> value.caption(),
new OptionInstance.Enum<>(Arrays.asList(ChatVisiblity.values()), ChatVisiblity.LEGACY_CODEC),
ChatVisiblity.FULL,
var0 -> {
LocalPlayer player = Minecraft.getInstance().player;
if (player != null) {
player.refreshChatAbilities();
}
}
);
private final OptionInstance<Double> chatOpacity = new OptionInstance<>(
"options.chat.opacity",
OptionInstance.noTooltip(),
(caption, value) -> percentValueLabel(caption, value * 0.9 + 0.1),
OptionInstance.UnitDouble.INSTANCE,
1.0,
value -> Minecraft.getInstance().gui.getChat().rescaleChat()
);
private final OptionInstance<Double> chatLineSpacing = new OptionInstance<>(
"options.chat.line_spacing", OptionInstance.noTooltip(), Options::percentValueLabel, OptionInstance.UnitDouble.INSTANCE, 0.0, value -> {}
);
private static final Component MENU_BACKGROUND_BLURRINESS_TOOLTIP = Component.translatable("options.accessibility.menu_background_blurriness.tooltip");
private static final int BLURRINESS_DEFAULT_VALUE = 5;
private final OptionInstance<Integer> menuBackgroundBlurriness = new OptionInstance<>(
"options.accessibility.menu_background_blurriness",
OptionInstance.cachedConstantTooltip(MENU_BACKGROUND_BLURRINESS_TOOLTIP),
Options::genericValueOrOffLabel,
new OptionInstance.IntRange(0, 10),
5,
value -> this.setGraphicsPresetToCustom()
);
private final OptionInstance<Double> textBackgroundOpacity = new OptionInstance<>(
"options.accessibility.text_background_opacity",
OptionInstance.noTooltip(),
Options::percentValueLabel,
OptionInstance.UnitDouble.INSTANCE,
0.5,
value -> Minecraft.getInstance().gui.getChat().rescaleChat()
);
private final OptionInstance<Double> panoramaSpeed = new OptionInstance<>(
"options.accessibility.panorama_speed", OptionInstance.noTooltip(), Options::percentValueLabel, OptionInstance.UnitDouble.INSTANCE, 1.0, v -> {}
);
private static final Component ACCESSIBILITY_TOOLTIP_CONTRAST_MODE = Component.translatable("options.accessibility.high_contrast.tooltip");
private final OptionInstance<Boolean> highContrast = OptionInstance.createBoolean(
"options.accessibility.high_contrast", OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_CONTRAST_MODE), false, value -> {
PackRepository packRepo = Minecraft.getInstance().getResourcePackRepository();
boolean isSelected = packRepo.getSelectedIds().contains("high_contrast");
if (!isSelected && value) {
if (packRepo.addPack("high_contrast")) {
this.updateResourcePacks(packRepo);
}
} else if (isSelected && !value && packRepo.removePack("high_contrast")) {
this.updateResourcePacks(packRepo);
}
}
);
private static final Component HIGH_CONTRAST_BLOCK_OUTLINE_TOOLTIP = Component.translatable("options.accessibility.high_contrast_block_outline.tooltip");
private final OptionInstance<Boolean> highContrastBlockOutline = OptionInstance.createBoolean(
"options.accessibility.high_contrast_block_outline", OptionInstance.cachedConstantTooltip(HIGH_CONTRAST_BLOCK_OUTLINE_TOOLTIP), false
);
private final OptionInstance<Boolean> narratorHotkey = OptionInstance.createBoolean(
"options.accessibility.narrator_hotkey",
OptionInstance.cachedConstantTooltip(
InputQuirks.REPLACE_CTRL_KEY_WITH_CMD_KEY
? Component.translatable("options.accessibility.narrator_hotkey.mac.tooltip")
: Component.translatable("options.accessibility.narrator_hotkey.tooltip")
),
true
);
public @Nullable String fullscreenVideoModeString;
public boolean hideServerAddress;
public boolean advancedItemTooltips;
public boolean pauseOnLostFocus = true;
private final Set<PlayerModelPart> modelParts = EnumSet.allOf(PlayerModelPart.class);
private final OptionInstance<HumanoidArm> mainHand = new OptionInstance<>(
"options.mainHand",
OptionInstance.noTooltip(),
(caption, value) -> value.caption(),
new OptionInstance.Enum<>(Arrays.asList(HumanoidArm.values()), HumanoidArm.CODEC),
HumanoidArm.RIGHT,
value -> {}
);
public int overrideWidth;
public int overrideHeight;
private final OptionInstance<Double> chatScale = new OptionInstance<>(
"options.chat.scale",
OptionInstance.noTooltip(),
(caption, value) -> (Component)(value == 0.0 ? CommonComponents.optionStatus(caption, false) : percentValueLabel(caption, value)),
OptionInstance.UnitDouble.INSTANCE,
1.0,
value -> Minecraft.getInstance().gui.getChat().rescaleChat()
);
private final OptionInstance<Double> chatWidth = new OptionInstance<>(
"options.chat.width",
OptionInstance.noTooltip(),
(caption, value) -> pixelValueLabel(caption, ChatComponent.getWidth(value)),
OptionInstance.UnitDouble.INSTANCE,
1.0,
value -> Minecraft.getInstance().gui.getChat().rescaleChat()
);
private final OptionInstance<Double> chatHeightUnfocused = new OptionInstance<>(
"options.chat.height.unfocused",
OptionInstance.noTooltip(),
(caption, value) -> pixelValueLabel(caption, ChatComponent.getHeight(value)),
OptionInstance.UnitDouble.INSTANCE,
ChatComponent.defaultUnfocusedPct(),
value -> Minecraft.getInstance().gui.getChat().rescaleChat()
);
private final OptionInstance<Double> chatHeightFocused = new OptionInstance<>(
"options.chat.height.focused",
OptionInstance.noTooltip(),
(caption, value) -> pixelValueLabel(caption, ChatComponent.getHeight(value)),
OptionInstance.UnitDouble.INSTANCE,
1.0,
value -> Minecraft.getInstance().gui.getChat().rescaleChat()
);
private final OptionInstance<Double> chatDelay = new OptionInstance<>(
"options.chat.delay_instant",
OptionInstance.noTooltip(),
(caption, value) -> value <= 0.0
? Component.translatable("options.chat.delay_none")
: Component.translatable("options.chat.delay", String.format(Locale.ROOT, "%.1f", value)),
new OptionInstance.IntRange(0, 60).xmap(value -> value / 10.0, value -> (int)(value * 10.0), true),
Codec.doubleRange(0.0, 6.0),
0.0,
value -> Minecraft.getInstance().getChatListener().setMessageDelay(value)
);
private static final Component ACCESSIBILITY_TOOLTIP_NOTIFICATION_DISPLAY_TIME = Component.translatable("options.notifications.display_time.tooltip");
private final OptionInstance<Double> notificationDisplayTime = new OptionInstance<>(
"options.notifications.display_time",
OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_NOTIFICATION_DISPLAY_TIME),
(caption, value) -> genericValueLabel(caption, Component.translatable("options.multiplier", value)),
new OptionInstance.IntRange(5, 100).xmap(value -> value / 10.0, value -> (int)(value * 10.0), true),
Codec.doubleRange(0.5, 10.0),
1.0,
value -> {}
);
private final OptionInstance<Integer> mipmapLevels = new OptionInstance<>(
"options.mipmapLevels",
OptionInstance.noTooltip(),
(caption, value) -> (Component)(value == 0 ? CommonComponents.optionStatus(caption, false) : genericValueLabel(caption, value)),
new OptionInstance.IntRange(0, 4),
4,
value -> this.setGraphicsPresetToCustom()
);
private static final Component GRAPHICS_TOOLTIP_ANISOTROPIC_FILTERING = Component.translatable("options.maxAnisotropy.tooltip");
private final OptionInstance<Integer> maxAnisotropyBit = new OptionInstance<>(
"options.maxAnisotropy",
OptionInstance.cachedConstantTooltip(GRAPHICS_TOOLTIP_ANISOTROPIC_FILTERING),
(caption, value) -> (Component)(value == 0
? CommonComponents.optionStatus(caption, false)
: genericValueLabel(caption, Component.translatable("options.multiplier", Integer.toString(1 << value)))),
new OptionInstance.IntRange(1, 3),
2,
value -> {
this.setGraphicsPresetToCustom();
operateOnLevelRenderer(LevelRenderer::resetSampler);
}
);
private static final Component FILTERING_NONE_TOOLTIP = Component.translatable("options.textureFiltering.none.tooltip");
private static final Component FILTERING_RGSS_TOOLTIP = Component.translatable("options.textureFiltering.rgss.tooltip");
private static final Component FILTERING_ANISOTROPIC_TOOLTIP = Component.translatable("options.textureFiltering.anisotropic.tooltip");
private final OptionInstance<TextureFilteringMethod> textureFiltering = new OptionInstance<>(
"options.textureFiltering",
value -> {
return switch (value) {
case NONE -> Tooltip.create(FILTERING_NONE_TOOLTIP);
case RGSS -> Tooltip.create(FILTERING_RGSS_TOOLTIP);
case ANISOTROPIC -> Tooltip.create(FILTERING_ANISOTROPIC_TOOLTIP);
};
},
(caption, value) -> value.caption(),
new OptionInstance.Enum<>(Arrays.asList(TextureFilteringMethod.values()), TextureFilteringMethod.LEGACY_CODEC),
TextureFilteringMethod.NONE,
value -> {
this.setGraphicsPresetToCustom();
operateOnLevelRenderer(LevelRenderer::resetSampler);
}
);
private boolean useNativeTransport = true;
private final OptionInstance<AttackIndicatorStatus> attackIndicator = new OptionInstance<>(
"options.attackIndicator",
OptionInstance.noTooltip(),
(caption, value) -> value.caption(),
new OptionInstance.Enum<>(Arrays.asList(AttackIndicatorStatus.values()), AttackIndicatorStatus.LEGACY_CODEC),
AttackIndicatorStatus.CROSSHAIR,
value -> {}
);
public TutorialSteps tutorialStep = TutorialSteps.MOVEMENT;
public boolean joinedFirstServer = false;
private final OptionInstance<Integer> biomeBlendRadius = new OptionInstance<>("options.biomeBlendRadius", OptionInstance.noTooltip(), (caption, value) -> {
int dist = value * 2 + 1;
return genericValueLabel(caption, Component.translatable("options.biomeBlendRadius." + dist));
}, new OptionInstance.IntRange(0, 7, false), 2, value -> {
operateOnLevelRenderer(LevelRenderer::allChanged);
this.setGraphicsPresetToCustom();
});
private final OptionInstance<Double> mouseWheelSensitivity = new OptionInstance<>(
"options.mouseWheelSensitivity",
OptionInstance.noTooltip(),
(caption, value) -> genericValueLabel(caption, Component.literal(String.format(Locale.ROOT, "%.2f", value))),
new OptionInstance.IntRange(-200, 100).xmap(Options::logMouse, Options::unlogMouse, false),
Codec.doubleRange(logMouse(-200), logMouse(100)),
logMouse(0),
value -> {}
);
private final OptionInstance<Boolean> rawMouseInput = OptionInstance.createBoolean("options.rawMouseInput", true, value -> {
Window window = Minecraft.getInstance().getWindow();
if (window != null) {
window.updateRawMouseInput(value);
}
});
private static final Component ALLOW_CURSOR_CHANGES_TOOLTIP = Component.translatable("options.allowCursorChanges.tooltip");
private final OptionInstance<Boolean> allowCursorChanges = OptionInstance.createBoolean(
"options.allowCursorChanges", OptionInstance.cachedConstantTooltip(ALLOW_CURSOR_CHANGES_TOOLTIP), true, value -> {
Window window = Minecraft.getInstance().getWindow();
if (window != null) {
window.setAllowCursorChanges(value);
}
}
);
public int glDebugVerbosity = 1;
private final OptionInstance<Boolean> autoJump = OptionInstance.createBoolean("options.autoJump", false);
private static final Component ACCESSIBILITY_TOOLTIP_ROTATE_WITH_MINECART = Component.translatable("options.rotateWithMinecart.tooltip");
private final OptionInstance<Boolean> rotateWithMinecart = OptionInstance.createBoolean(
"options.rotateWithMinecart", OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_ROTATE_WITH_MINECART), false
);
private final OptionInstance<Boolean> operatorItemsTab = OptionInstance.createBoolean("options.operatorItemsTab", false);
private final OptionInstance<Boolean> autoSuggestions = OptionInstance.createBoolean("options.autoSuggestCommands", true);
private final OptionInstance<Boolean> chatColors = OptionInstance.createBoolean("options.chat.color", true);
private final OptionInstance<Boolean> chatLinks = OptionInstance.createBoolean("options.chat.links", true);
private final OptionInstance<Boolean> chatLinksPrompt = OptionInstance.createBoolean("options.chat.links.prompt", true);
private final OptionInstance<Boolean> enableVsync = OptionInstance.createBoolean("options.vsync", true, value -> {
if (Minecraft.getInstance().getWindow() != null) {
Minecraft.getInstance().getWindow().updateVsync(value);
}
});
private final OptionInstance<Boolean> entityShadows = OptionInstance.createBoolean(
"options.entityShadows", OptionInstance.noTooltip(), true, value -> this.setGraphicsPresetToCustom()
);
private final OptionInstance<Boolean> forceUnicodeFont = OptionInstance.createBoolean("options.forceUnicodeFont", false, value -> updateFontOptions());
private final OptionInstance<Boolean> japaneseGlyphVariants = OptionInstance.createBoolean(
"options.japaneseGlyphVariants",
OptionInstance.cachedConstantTooltip(Component.translatable("options.japaneseGlyphVariants.tooltip")),
japaneseGlyphVariantsDefault(),
value -> updateFontOptions()
);
private final OptionInstance<Boolean> invertXMouse = OptionInstance.createBoolean("options.invertMouseX", false);
private final OptionInstance<Boolean> invertYMouse = OptionInstance.createBoolean("options.invertMouseY", false);
private final OptionInstance<Boolean> discreteMouseScroll = OptionInstance.createBoolean("options.discrete_mouse_scroll", false);
private static final Component REALMS_NOTIFICATIONS_TOOLTIP = Component.translatable("options.realmsNotifications.tooltip");
private final OptionInstance<Boolean> realmsNotifications = OptionInstance.createBoolean(
"options.realmsNotifications", OptionInstance.cachedConstantTooltip(REALMS_NOTIFICATIONS_TOOLTIP), true
);
private static final Component ALLOW_SERVER_LISTING_TOOLTIP = Component.translatable("options.allowServerListing.tooltip");
private final OptionInstance<Boolean> allowServerListing = OptionInstance.createBoolean(
"options.allowServerListing", OptionInstance.cachedConstantTooltip(ALLOW_SERVER_LISTING_TOOLTIP), true, value -> {}
);
private final OptionInstance<Boolean> reducedDebugInfo = OptionInstance.createBoolean(
"options.reducedDebugInfo", OptionInstance.noTooltip(), false, ignored -> Minecraft.getInstance().debugEntries.rebuildCurrentList()
);
private final Map<SoundSource, OptionInstance<Double>> soundSourceVolumes = Util.makeEnumMap(
SoundSource.class, source -> this.createSoundSliderOptionInstance("soundCategory." + source.getName(), source)
);
private static final Component CLOSED_CAPTIONS_TOOLTIP = Component.translatable("options.showSubtitles.tooltip");
private final OptionInstance<Boolean> showSubtitles = OptionInstance.createBoolean(
"options.showSubtitles", OptionInstance.cachedConstantTooltip(CLOSED_CAPTIONS_TOOLTIP), false
);
private static final Component DIRECTIONAL_AUDIO_TOOLTIP_ON = Component.translatable("options.directionalAudio.on.tooltip");
private static final Component DIRECTIONAL_AUDIO_TOOLTIP_OFF = Component.translatable("options.directionalAudio.off.tooltip");
private final OptionInstance<Boolean> directionalAudio = OptionInstance.createBoolean(
"options.directionalAudio",
value -> value ? Tooltip.create(DIRECTIONAL_AUDIO_TOOLTIP_ON) : Tooltip.create(DIRECTIONAL_AUDIO_TOOLTIP_OFF),
false,
value -> {
SoundManager soundManager = Minecraft.getInstance().getSoundManager();
soundManager.reload();
soundManager.play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
}
);
private final OptionInstance<Boolean> backgroundForChatOnly = new OptionInstance<>(
"options.accessibility.text_background",
OptionInstance.noTooltip(),
(caption, value) -> value
? Component.translatable("options.accessibility.text_background.chat")
: Component.translatable("options.accessibility.text_background.everywhere"),
OptionInstance.BOOLEAN_VALUES,
true,
value -> {}
);
private final OptionInstance<Boolean> touchscreen = OptionInstance.createBoolean("options.touchscreen", false);
private final OptionInstance<Boolean> fullscreen = OptionInstance.createBoolean("options.fullscreen", false, value -> {
Minecraft minecraftx = Minecraft.getInstance();
if (minecraftx.getWindow() != null && minecraftx.getWindow().isFullscreen() != value) {
minecraftx.getWindow().toggleFullScreen();
this.fullscreen().set(minecraftx.getWindow().isFullscreen());
}
});
private boolean initialExclusiveFullscreen;
private static final Component TOOLTIP_EXCLUSIVE_FULLSCREEN_WARNING = Component.translatable("options.exclusiveFullscreen.warningTooltip");
private final OptionInstance<Boolean> exclusiveFullscreen = OptionInstance.createBoolean("options.exclusiveFullscreen", value -> {
List<Component> tooltipLines = new ArrayList<>();
if (value != this.initialExclusiveFullscreen) {
tooltipLines.add(TOOLTIP_NEEDS_RESTART);
}
if (value) {
if (!tooltipLines.isEmpty()) {
tooltipLines.add(CommonComponents.EMPTY);
}
tooltipLines.add(TOOLTIP_EXCLUSIVE_FULLSCREEN_WARNING);
}
return !tooltipLines.isEmpty() ? Tooltip.create(CommonComponents.joinLines(tooltipLines)) : null;
}, false);
private final OptionInstance<Boolean> bobView = OptionInstance.createBoolean("options.viewBobbing", true);
private static final Component KEY_TOGGLE = Component.translatable("options.key.toggle");
private static final Component KEY_HOLD = Component.translatable("options.key.hold");
private final OptionInstance<Boolean> toggleCrouch = new OptionInstance<>(
"key.sneak", OptionInstance.noTooltip(), (caption, value) -> value ? KEY_TOGGLE : KEY_HOLD, OptionInstance.BOOLEAN_VALUES, false, value -> {}
);
private final OptionInstance<Boolean> toggleSprint = new OptionInstance<>(
"key.sprint", OptionInstance.noTooltip(), (caption, value) -> value ? KEY_TOGGLE : KEY_HOLD, OptionInstance.BOOLEAN_VALUES, false, value -> {}
);
private final OptionInstance<Boolean> toggleAttack = new OptionInstance<>(
"key.attack", OptionInstance.noTooltip(), (caption, value) -> value ? KEY_TOGGLE : KEY_HOLD, OptionInstance.BOOLEAN_VALUES, false, value -> {}
);
private final OptionInstance<Boolean> toggleUse = new OptionInstance<>(
"key.use", OptionInstance.noTooltip(), (caption, value) -> value ? KEY_TOGGLE : KEY_HOLD, OptionInstance.BOOLEAN_VALUES, false, value -> {}
);
private static final Component SPRINT_WINDOW_TOOLTIP = Component.translatable("options.sprintWindow.tooltip");
private final OptionInstance<Integer> sprintWindow = new OptionInstance<>(
"options.sprintWindow",
OptionInstance.cachedConstantTooltip(SPRINT_WINDOW_TOOLTIP),
(caption, value) -> value == 0
? genericValueLabel(caption, Component.translatable("options.off"))
: genericValueLabel(caption, Component.translatable("options.value", value)),
new OptionInstance.IntRange(0, 10),
7,
value -> {}
);
public boolean skipMultiplayerWarning;
private static final Component CHAT_TOOLTIP_HIDE_MATCHED_NAMES = Component.translatable("options.hideMatchedNames.tooltip");
private final OptionInstance<Boolean> hideMatchedNames = OptionInstance.createBoolean(
"options.hideMatchedNames", OptionInstance.cachedConstantTooltip(CHAT_TOOLTIP_HIDE_MATCHED_NAMES), true
);
private final OptionInstance<Boolean> showAutosaveIndicator = OptionInstance.createBoolean("options.autosaveIndicator", true);
private static final Component CHAT_TOOLTIP_ONLY_SHOW_SECURE = Component.translatable("options.onlyShowSecureChat.tooltip");
private final OptionInstance<Boolean> onlyShowSecureChat = OptionInstance.createBoolean(
"options.onlyShowSecureChat", OptionInstance.cachedConstantTooltip(CHAT_TOOLTIP_ONLY_SHOW_SECURE), false
);
private static final Component CHAT_TOOLTIP_SAVE_DRAFTS = Component.translatable("options.chat.drafts.tooltip");
private final OptionInstance<Boolean> saveChatDrafts = OptionInstance.createBoolean(
"options.chat.drafts", OptionInstance.cachedConstantTooltip(CHAT_TOOLTIP_SAVE_DRAFTS), false
);
public final KeyMapping keyUp = new KeyMapping("key.forward", 87, KeyMapping.Category.MOVEMENT);
public final KeyMapping keyLeft = new KeyMapping("key.left", 65, KeyMapping.Category.MOVEMENT);
public final KeyMapping keyDown = new KeyMapping("key.back", 83, KeyMapping.Category.MOVEMENT);
public final KeyMapping keyRight = new KeyMapping("key.right", 68, KeyMapping.Category.MOVEMENT);
public final KeyMapping keyJump = new KeyMapping("key.jump", 32, KeyMapping.Category.MOVEMENT);
public final KeyMapping keyShift = new ToggleKeyMapping("key.sneak", 340, KeyMapping.Category.MOVEMENT, this.toggleCrouch::get, true);
public final KeyMapping keySprint = new ToggleKeyMapping("key.sprint", 341, KeyMapping.Category.MOVEMENT, this.toggleSprint::get, true);
public final KeyMapping keyInventory = new KeyMapping("key.inventory", 69, KeyMapping.Category.INVENTORY);
public final KeyMapping keySwapOffhand = new KeyMapping("key.swapOffhand", 70, KeyMapping.Category.INVENTORY);
public final KeyMapping keyDrop = new KeyMapping("key.drop", 81, KeyMapping.Category.INVENTORY);
public final KeyMapping keyUse = new ToggleKeyMapping("key.use", InputConstants.Type.MOUSE, 1, KeyMapping.Category.GAMEPLAY, this.toggleUse::get, false);
public final KeyMapping keyAttack = new ToggleKeyMapping(
"key.attack", InputConstants.Type.MOUSE, 0, KeyMapping.Category.GAMEPLAY, this.toggleAttack::get, true
);
public final KeyMapping keyPickItem = new KeyMapping("key.pickItem", InputConstants.Type.MOUSE, 2, KeyMapping.Category.GAMEPLAY);
public final KeyMapping keyChat = new KeyMapping("key.chat", 84, KeyMapping.Category.MULTIPLAYER);
public final KeyMapping keyPlayerList = new KeyMapping("key.playerlist", 258, KeyMapping.Category.MULTIPLAYER);
public final KeyMapping keyCommand = new KeyMapping("key.command", 47, KeyMapping.Category.MULTIPLAYER);
public final KeyMapping keySocialInteractions = new KeyMapping("key.socialInteractions", 80, KeyMapping.Category.MULTIPLAYER);
public final KeyMapping keyScreenshot = new KeyMapping("key.screenshot", 291, KeyMapping.Category.MISC);
public final KeyMapping keyTogglePerspective = new KeyMapping("key.togglePerspective", 294, KeyMapping.Category.MISC);
public final KeyMapping keySmoothCamera = new KeyMapping("key.smoothCamera", InputConstants.UNKNOWN.getValue(), KeyMapping.Category.MISC);
public final KeyMapping keyFullscreen = new KeyMapping("key.fullscreen", 300, KeyMapping.Category.MISC);
public final KeyMapping keyAdvancements = new KeyMapping("key.advancements", 76, KeyMapping.Category.MISC);
public final KeyMapping keyQuickActions = new KeyMapping("key.quickActions", 71, KeyMapping.Category.MISC);
public final KeyMapping keyToggleGui = new KeyMapping("key.toggleGui", 290, KeyMapping.Category.MISC);
public final KeyMapping keyToggleSpectatorShaderEffects = new KeyMapping("key.toggleSpectatorShaderEffects", 293, KeyMapping.Category.MISC);
public final KeyMapping[] keyHotbarSlots = new KeyMapping[]{
new KeyMapping("key.hotbar.1", 49, KeyMapping.Category.INVENTORY),
new KeyMapping("key.hotbar.2", 50, KeyMapping.Category.INVENTORY),
new KeyMapping("key.hotbar.3", 51, KeyMapping.Category.INVENTORY),
new KeyMapping("key.hotbar.4", 52, KeyMapping.Category.INVENTORY),
new KeyMapping("key.hotbar.5", 53, KeyMapping.Category.INVENTORY),
new KeyMapping("key.hotbar.6", 54, KeyMapping.Category.INVENTORY),
new KeyMapping("key.hotbar.7", 55, KeyMapping.Category.INVENTORY),
new KeyMapping("key.hotbar.8", 56, KeyMapping.Category.INVENTORY),
new KeyMapping("key.hotbar.9", 57, KeyMapping.Category.INVENTORY)
};
public final KeyMapping keySaveHotbarActivator = new KeyMapping("key.saveToolbarActivator", 67, KeyMapping.Category.CREATIVE);
public final KeyMapping keyLoadHotbarActivator = new KeyMapping("key.loadToolbarActivator", 88, KeyMapping.Category.CREATIVE);
public final KeyMapping keySpectatorOutlines = new KeyMapping("key.spectatorOutlines", InputConstants.UNKNOWN.getValue(), KeyMapping.Category.SPECTATOR);
public final KeyMapping keySpectatorHotbar = new KeyMapping("key.spectatorHotbar", InputConstants.Type.MOUSE, 2, KeyMapping.Category.SPECTATOR);
public final KeyMapping keyDebugOverlay = new KeyMapping("key.debug.overlay", InputConstants.Type.KEYSYM, 292, KeyMapping.Category.DEBUG, -2);
public final KeyMapping keyDebugModifier = new KeyMapping("key.debug.modifier", InputConstants.Type.KEYSYM, 292, KeyMapping.Category.DEBUG, -1);
public final KeyMapping keyDebugCrash = new KeyMapping("key.debug.crash", InputConstants.Type.KEYSYM, 67, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugReloadChunk = new KeyMapping("key.debug.reloadChunk", InputConstants.Type.KEYSYM, 65, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugShowHitboxes = new KeyMapping("key.debug.showHitboxes", InputConstants.Type.KEYSYM, 66, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugClearChat = new KeyMapping("key.debug.clearChat", InputConstants.Type.KEYSYM, 68, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugShowChunkBorders = new KeyMapping("key.debug.showChunkBorders", InputConstants.Type.KEYSYM, 71, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugShowAdvancedTooltips = new KeyMapping(
"key.debug.showAdvancedTooltips", InputConstants.Type.KEYSYM, 72, KeyMapping.Category.DEBUG
);
public final KeyMapping keyDebugCopyRecreateCommand = new KeyMapping(
"key.debug.copyRecreateCommand", InputConstants.Type.KEYSYM, 73, KeyMapping.Category.DEBUG
);
public final KeyMapping keyDebugSpectate = new KeyMapping("key.debug.spectate", InputConstants.Type.KEYSYM, 78, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugSwitchGameMode = new KeyMapping("key.debug.switchGameMode", InputConstants.Type.KEYSYM, 293, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugDebugOptions = new KeyMapping("key.debug.debugOptions", InputConstants.Type.KEYSYM, 295, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugFocusPause = new KeyMapping("key.debug.focusPause", InputConstants.Type.KEYSYM, 80, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugDumpDynamicTextures = new KeyMapping(
"key.debug.dumpDynamicTextures", InputConstants.Type.KEYSYM, 83, KeyMapping.Category.DEBUG
);
public final KeyMapping keyDebugReloadResourcePacks = new KeyMapping(
"key.debug.reloadResourcePacks", InputConstants.Type.KEYSYM, 84, KeyMapping.Category.DEBUG
);
public final KeyMapping keyDebugProfiling = new KeyMapping("key.debug.profiling", InputConstants.Type.KEYSYM, 76, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugCopyLocation = new KeyMapping("key.debug.copyLocation", InputConstants.Type.KEYSYM, 67, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugDumpVersion = new KeyMapping("key.debug.dumpVersion", InputConstants.Type.KEYSYM, 86, KeyMapping.Category.DEBUG);
public final KeyMapping keyDebugPofilingChart = new KeyMapping("key.debug.profilingChart", InputConstants.Type.KEYSYM, 49, KeyMapping.Category.DEBUG, 1);
public final KeyMapping keyDebugFpsCharts = new KeyMapping("key.debug.fpsCharts", InputConstants.Type.KEYSYM, 50, KeyMapping.Category.DEBUG, 2);
public final KeyMapping keyDebugNetworkCharts = new KeyMapping("key.debug.networkCharts", InputConstants.Type.KEYSYM, 51, KeyMapping.Category.DEBUG, 3);
public final KeyMapping keyDebugLightmapTexture = new KeyMapping("key.debug.lightmapTexture", InputConstants.Type.KEYSYM, 52, KeyMapping.Category.DEBUG, 4);
public final KeyMapping[] debugKeys = new KeyMapping[]{
this.keyDebugReloadChunk,
this.keyDebugShowHitboxes,
this.keyDebugClearChat,
this.keyDebugCrash,
this.keyDebugShowChunkBorders,
this.keyDebugShowAdvancedTooltips,
this.keyDebugCopyRecreateCommand,
this.keyDebugSpectate,
this.keyDebugSwitchGameMode,
this.keyDebugDebugOptions,
this.keyDebugFocusPause,
this.keyDebugDumpDynamicTextures,
this.keyDebugReloadResourcePacks,
this.keyDebugProfiling,
this.keyDebugCopyLocation,
this.keyDebugDumpVersion,
this.keyDebugPofilingChart,
this.keyDebugFpsCharts,
this.keyDebugNetworkCharts,
this.keyDebugLightmapTexture
};
public final KeyMapping[] keyMappings = Stream.of(
new KeyMapping[]{
this.keyAttack,
this.keyUse,
this.keyUp,
this.keyLeft,
this.keyDown,
this.keyRight,
this.keyJump,
this.keyShift,
this.keySprint,
this.keyDrop,
this.keyInventory,
this.keyChat,
this.keyPlayerList,
this.keyPickItem,
this.keyCommand,
this.keySocialInteractions,
this.keyToggleGui,
this.keyToggleSpectatorShaderEffects,
this.keyScreenshot,
this.keyTogglePerspective,
this.keySmoothCamera,
this.keyFullscreen,
this.keySpectatorOutlines,
this.keySpectatorHotbar,
this.keySwapOffhand,
this.keySaveHotbarActivator,
this.keyLoadHotbarActivator,
this.keyAdvancements,
this.keyQuickActions,
this.keyDebugOverlay,
this.keyDebugModifier
},
this.keyHotbarSlots,
this.debugKeys
)
.flatMap(Stream::of)
.toArray(KeyMapping[]::new);
protected Minecraft minecraft;
private final File optionsFile;
public boolean hideGui;
private CameraType cameraType = CameraType.FIRST_PERSON;
public String lastMpIp = "";
public boolean smoothCamera;
private final OptionInstance<Integer> fov = new OptionInstance<>(
"options.fov",
OptionInstance.noTooltip(),
(caption, value) -> {
return switch (value) {
case 70 -> genericValueLabel(caption, Component.translatable("options.fov.min"));
case 110 -> genericValueLabel(caption, Component.translatable("options.fov.max"));
default -> genericValueLabel(caption, value);
};
},
new OptionInstance.IntRange(30, 110),
Codec.DOUBLE.xmap(value -> (int)(value * 40.0 + 70.0), value -> (value.intValue() - 70.0) / 40.0),
70,
value -> operateOnLevelRenderer(LevelRenderer::needsUpdate)
);
private static final Component TELEMETRY_TOOLTIP = Component.translatable(
"options.telemetry.button.tooltip", Component.translatable("options.telemetry.state.minimal"), Component.translatable("options.telemetry.state.all")
);
private final OptionInstance<Boolean> telemetryOptInExtra = OptionInstance.createBoolean(
"options.telemetry.button",
OptionInstance.cachedConstantTooltip(TELEMETRY_TOOLTIP),
(caption, value) -> {
Minecraft minecraftx = Minecraft.getInstance();
if (!minecraftx.allowsTelemetry()) {
return Component.translatable("options.telemetry.state.none");
} else {
return value && minecraftx.extraTelemetryAvailable()
? Component.translatable("options.telemetry.state.all")
: Component.translatable("options.telemetry.state.minimal");
}
},
false,
value -> {}
);
private static final Component ACCESSIBILITY_TOOLTIP_SCREEN_EFFECT = Component.translatable("options.screenEffectScale.tooltip");
private final OptionInstance<Double> screenEffectScale = new OptionInstance<>(
"options.screenEffectScale",
OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_SCREEN_EFFECT),
Options::percentValueOrOffLabel,
OptionInstance.UnitDouble.INSTANCE,
1.0,
value -> {}
);
private static final Component ACCESSIBILITY_TOOLTIP_FOV_EFFECT = Component.translatable("options.fovEffectScale.tooltip");
private final OptionInstance<Double> fovEffectScale = new OptionInstance<>(
"options.fovEffectScale",
OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_FOV_EFFECT),
Options::percentValueOrOffLabel,
OptionInstance.UnitDouble.INSTANCE.xmap(Mth::square, Math::sqrt),
Codec.doubleRange(0.0, 1.0),
1.0,
value -> {}
);
private static final Component ACCESSIBILITY_TOOLTIP_DARKNESS_EFFECT = Component.translatable("options.darknessEffectScale.tooltip");
private final OptionInstance<Double> darknessEffectScale = new OptionInstance<>(
"options.darknessEffectScale",
OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_DARKNESS_EFFECT),
Options::percentValueOrOffLabel,
OptionInstance.UnitDouble.INSTANCE.xmap(Mth::square, Math::sqrt),
1.0,
value -> {}
);
private static final Component ACCESSIBILITY_TOOLTIP_GLINT_SPEED = Component.translatable("options.glintSpeed.tooltip");
private final OptionInstance<Double> glintSpeed = new OptionInstance<>(
"options.glintSpeed",
OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_GLINT_SPEED),
Options::percentValueOrOffLabel,
OptionInstance.UnitDouble.INSTANCE,
0.5,
value -> {}
);
private static final Component ACCESSIBILITY_TOOLTIP_GLINT_STRENGTH = Component.translatable("options.glintStrength.tooltip");
private final OptionInstance<Double> glintStrength = new OptionInstance<>(
"options.glintStrength",
OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_GLINT_STRENGTH),
Options::percentValueOrOffLabel,
OptionInstance.UnitDouble.INSTANCE,
0.75,
value -> {}
);
private static final Component ACCESSIBILITY_TOOLTIP_DAMAGE_TILT_STRENGTH = Component.translatable("options.damageTiltStrength.tooltip");
private final OptionInstance<Double> damageTiltStrength = new OptionInstance<>(
"options.damageTiltStrength",
OptionInstance.cachedConstantTooltip(ACCESSIBILITY_TOOLTIP_DAMAGE_TILT_STRENGTH),
Options::percentValueOrOffLabel,
OptionInstance.UnitDouble.INSTANCE,
1.0,
value -> {}
);
private final OptionInstance<Double> gamma = new OptionInstance<>(
"options.gamma",
OptionInstance.noTooltip(),
(caption, value) -> {
int progressValueToDisplay = (int)(value * 100.0);
if (progressValueToDisplay == 0) {
return genericValueLabel(caption, Component.translatable("options.gamma.min"));
} else if (progressValueToDisplay == 50) {
return genericValueLabel(caption, Component.translatable("options.gamma.default"));
} else {
return progressValueToDisplay == 100
? genericValueLabel(caption, Component.translatable("options.gamma.max"))
: genericValueLabel(caption, progressValueToDisplay);
}
},
OptionInstance.UnitDouble.INSTANCE,
0.5,
value -> {}
);
public static final int AUTO_GUI_SCALE = 0;
private static final int MAX_GUI_SCALE_INCLUSIVE = 2147483646;
private final OptionInstance<Integer> guiScale = new OptionInstance<>(
"options.guiScale",
OptionInstance.noTooltip(),
(caption, value) -> value == 0 ? Component.translatable("options.guiScale.auto") : Component.literal(Integer.toString(value)),
new OptionInstance.ClampingLazyMaxIntRange(0, () -> {
Minecraft minecraftx = Minecraft.getInstance();
return !minecraftx.isRunning() ? 2147483646 : minecraftx.getWindow().calculateScale(0, minecraftx.isEnforceUnicode());
}, 2147483646),
0,
value -> this.minecraft.resizeGui()
);
private final OptionInstance<ParticleStatus> particles = new OptionInstance<>(
"options.particles",
OptionInstance.noTooltip(),
(caption, value) -> value.caption(),
new OptionInstance.Enum<>(Arrays.asList(ParticleStatus.values()), ParticleStatus.LEGACY_CODEC),
ParticleStatus.ALL,
value -> this.setGraphicsPresetToCustom()
);
private final OptionInstance<NarratorStatus> narrator = new OptionInstance<>(
"options.narrator",
OptionInstance.noTooltip(),
(caption, value) -> (Component)(this.minecraft.getNarrator().isActive() ? value.getName() : Component.translatable("options.narrator.notavailable")),
new OptionInstance.Enum<>(Arrays.asList(NarratorStatus.values()), NarratorStatus.LEGACY_CODEC),
NarratorStatus.OFF,
value -> this.minecraft.getNarrator().updateNarratorStatus(value)
);
public String languageCode = "en_us";
private final OptionInstance<String> soundDevice = new OptionInstance<>(
"options.audioDevice",
OptionInstance.noTooltip(),
(caption, value) -> {
if ("".equals(value)) {
return Component.translatable("options.audioDevice.default");
} else {
return value.startsWith("OpenAL Soft on ")
? Component.literal(value.substring(SoundEngine.OPEN_AL_SOFT_PREFIX_LENGTH))
: Component.literal(value);
}
},
new OptionInstance.LazyEnum<>(
() -> Stream.concat(Stream.of(""), Minecraft.getInstance().getSoundManager().getAvailableSoundDevices().stream()).toList(),
device -> Minecraft.getInstance().isRunning()
&& !isSoundDeviceDefault(device)
&& !Minecraft.getInstance().getSoundManager().getAvailableSoundDevices().contains(device)
? Optional.empty()
: Optional.of(device),
Codec.STRING
),
"",
value -> {
SoundManager soundManager = Minecraft.getInstance().getSoundManager();
soundManager.reload();
soundManager.play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
}
);
public boolean onboardAccessibility = true;
private static final Component MUSIC_FREQUENCY_TOOLTIP = Component.translatable("options.music_frequency.tooltip");
private final OptionInstance<MusicManager.MusicFrequency> musicFrequency = new OptionInstance<>(
"options.music_frequency",
OptionInstance.cachedConstantTooltip(MUSIC_FREQUENCY_TOOLTIP),
(caption, value) -> value.caption(),
new OptionInstance.Enum<>(Arrays.asList(MusicManager.MusicFrequency.values()), MusicManager.MusicFrequency.CODEC),
MusicManager.MusicFrequency.DEFAULT,
value -> Minecraft.getInstance().getMusicManager().setMinutesBetweenSongs(value)
);
private final OptionInstance<MusicToastDisplayState> musicToast = new OptionInstance<>(
"options.musicToast",
value -> Tooltip.create(value.tooltip()),
(caption, value) -> value.text(),
new OptionInstance.Enum<>(Arrays.asList(MusicToastDisplayState.values()), MusicToastDisplayState.CODEC),
MusicToastDisplayState.NEVER,
value -> this.minecraft.getToastManager().setMusicToastDisplayState(value)
);
public boolean syncWrites;
public boolean startedCleanly = true;
public static boolean isSoundDeviceDefault(String deviceName) {
return deviceName.equals("");
}
private static void operateOnLevelRenderer(Consumer<LevelRenderer> consumer) {
LevelRenderer levelRenderer = Minecraft.getInstance().levelRenderer;
if (levelRenderer != null) {
consumer.accept(levelRenderer);
}
}
public OptionInstance<Boolean> darkMojangStudiosBackground() {
return this.darkMojangStudiosBackground;
}
public OptionInstance<Boolean> hideLightningFlash() {
return this.hideLightningFlash;
}
public OptionInstance<Boolean> hideSplashTexts() {
return this.hideSplashTexts;
}
public OptionInstance<Double> sensitivity() {
return this.sensitivity;
}
public OptionInstance<Integer> renderDistance() {
return this.renderDistance;
}
public OptionInstance<Integer> simulationDistance() {
return this.simulationDistance;
}
public OptionInstance<Double> entityDistanceScaling() {
return this.entityDistanceScaling;
}
public OptionInstance<Integer> framerateLimit() {
return this.framerateLimit;
}
public void applyGraphicsPreset(GraphicsPreset value) {
this.isApplyingGraphicsPreset = true;
value.apply(this.minecraft);
this.isApplyingGraphicsPreset = false;
}
public OptionInstance<GraphicsPreset> graphicsPreset() {
return this.graphicsPreset;
}
public OptionInstance<InactivityFpsLimit> inactivityFpsLimit() {
return this.inactivityFpsLimit;
}
public OptionInstance<CloudStatus> cloudStatus() {
return this.cloudStatus;
}
public OptionInstance<Integer> cloudRange() {
return this.cloudRange;
}
public OptionInstance<Integer> weatherRadius() {
return this.weatherRadius;
}
public OptionInstance<Boolean> cutoutLeaves() {
return this.cutoutLeaves;
}
public OptionInstance<Boolean> vignette() {
return this.vignette;
}
public OptionInstance<Boolean> improvedTransparency() {
return this.improvedTransparency;
}
public OptionInstance<Boolean> ambientOcclusion() {
return this.ambientOcclusion;
}
public OptionInstance<Double> chunkSectionFadeInTime() {
return this.chunkSectionFadeInTime;
}
public OptionInstance<PrioritizeChunkUpdates> prioritizeChunkUpdates() {
return this.prioritizeChunkUpdates;
}
public void updateResourcePacks(PackRepository packRepository) {
List<String> oldPacks = ImmutableList.copyOf(this.resourcePacks);
this.resourcePacks.clear();
this.incompatibleResourcePacks.clear();
for (Pack entry : packRepository.getSelectedPacks()) {
if (!entry.isFixedPosition()) {
this.resourcePacks.add(entry.getId());
if (!entry.getCompatibility().isCompatible()) {
this.incompatibleResourcePacks.add(entry.getId());
}
}
}
this.save();
List<String> newPacks = ImmutableList.copyOf(this.resourcePacks);
if (!newPacks.equals(oldPacks)) {
this.minecraft.reloadResourcePacks();
}
}
public OptionInstance<ChatVisiblity> chatVisibility() {
return this.chatVisibility;
}
public OptionInstance<Double> chatOpacity() {
return this.chatOpacity;
}
public OptionInstance<Double> chatLineSpacing() {
return this.chatLineSpacing;
}
public OptionInstance<Integer> menuBackgroundBlurriness() {
return this.menuBackgroundBlurriness;
}
public int getMenuBackgroundBlurriness() {
return this.menuBackgroundBlurriness().get();
}
public OptionInstance<Double> textBackgroundOpacity() {
return this.textBackgroundOpacity;
}
public OptionInstance<Double> panoramaSpeed() {
return this.panoramaSpeed;
}
public OptionInstance<Boolean> highContrast() {
return this.highContrast;
}
public OptionInstance<Boolean> highContrastBlockOutline() {
return this.highContrastBlockOutline;
}
public OptionInstance<Boolean> narratorHotkey() {
return this.narratorHotkey;
}
public OptionInstance<HumanoidArm> mainHand() {
return this.mainHand;
}
public OptionInstance<Double> chatScale() {
return this.chatScale;
}
public OptionInstance<Double> chatWidth() {
return this.chatWidth;
}
public OptionInstance<Double> chatHeightUnfocused() {
return this.chatHeightUnfocused;
}
public OptionInstance<Double> chatHeightFocused() {
return this.chatHeightFocused;
}
public OptionInstance<Double> chatDelay() {
return this.chatDelay;
}
public OptionInstance<Double> notificationDisplayTime() {
return this.notificationDisplayTime;
}
public OptionInstance<Integer> mipmapLevels() {
return this.mipmapLevels;
}
public OptionInstance<Integer> maxAnisotropyBit() {
return this.maxAnisotropyBit;
}
public int maxAnisotropyValue() {
return Math.min(1 << this.maxAnisotropyBit.get(), RenderSystem.getDevice().getMaxSupportedAnisotropy());
}
public OptionInstance<TextureFilteringMethod> textureFiltering() {
return this.textureFiltering;
}
public OptionInstance<AttackIndicatorStatus> attackIndicator() {
return this.attackIndicator;
}
public OptionInstance<Integer> biomeBlendRadius() {
return this.biomeBlendRadius;
}
private static double logMouse(int value) {
return Math.pow(10.0, value / 100.0);
}
private static int unlogMouse(double value) {
return Mth.floor(Math.log10(value) * 100.0);
}
public OptionInstance<Double> mouseWheelSensitivity() {
return this.mouseWheelSensitivity;
}
public OptionInstance<Boolean> rawMouseInput() {
return this.rawMouseInput;
}
public OptionInstance<Boolean> allowCursorChanges() {
return this.allowCursorChanges;
}
public OptionInstance<Boolean> autoJump() {
return this.autoJump;
}
public OptionInstance<Boolean> rotateWithMinecart() {
return this.rotateWithMinecart;
}
public OptionInstance<Boolean> operatorItemsTab() {
return this.operatorItemsTab;
}
public OptionInstance<Boolean> autoSuggestions() {
return this.autoSuggestions;
}
public OptionInstance<Boolean> chatColors() {
return this.chatColors;
}
public OptionInstance<Boolean> chatLinks() {
return this.chatLinks;
}
public OptionInstance<Boolean> chatLinksPrompt() {
return this.chatLinksPrompt;
}
public OptionInstance<Boolean> enableVsync() {
return this.enableVsync;
}
public OptionInstance<Boolean> entityShadows() {
return this.entityShadows;
}
private static void updateFontOptions() {
Minecraft instance = Minecraft.getInstance();
if (instance.getWindow() != null) {
instance.updateFontOptions();
instance.resizeGui();
}
}
public OptionInstance<Boolean> forceUnicodeFont() {
return this.forceUnicodeFont;
}
private static boolean japaneseGlyphVariantsDefault() {
return Locale.getDefault().getLanguage().equalsIgnoreCase("ja");
}
public OptionInstance<Boolean> japaneseGlyphVariants() {
return this.japaneseGlyphVariants;
}
public OptionInstance<Boolean> invertMouseX() {
return this.invertXMouse;
}
public OptionInstance<Boolean> invertMouseY() {
return this.invertYMouse;
}
public OptionInstance<Boolean> discreteMouseScroll() {
return this.discreteMouseScroll;
}
public OptionInstance<Boolean> realmsNotifications() {
return this.realmsNotifications;
}
public OptionInstance<Boolean> allowServerListing() {
return this.allowServerListing;
}
public OptionInstance<Boolean> reducedDebugInfo() {
return this.reducedDebugInfo;
}
public final float getFinalSoundSourceVolume(SoundSource source) {
return source == SoundSource.MASTER
? this.getSoundSourceVolume(source)
: this.getSoundSourceVolume(source) * this.getSoundSourceVolume(SoundSource.MASTER);
}
public final float getSoundSourceVolume(SoundSource source) {
return this.getSoundSourceOptionInstance(source).get().floatValue();
}
public final OptionInstance<Double> getSoundSourceOptionInstance(SoundSource source) {
return Objects.requireNonNull(this.soundSourceVolumes.get(source));
}
private OptionInstance<Double> createSoundSliderOptionInstance(String captionId, SoundSource category) {
return new OptionInstance<>(captionId, OptionInstance.noTooltip(), Options::percentValueOrOffLabel, OptionInstance.UnitDouble.INSTANCE, 1.0, value -> {
Minecraft minecraft = Minecraft.getInstance();
SoundManager soundManager = minecraft.getSoundManager();
if ((category == SoundSource.MASTER || category == SoundSource.MUSIC) && this.getFinalSoundSourceVolume(SoundSource.MUSIC) > 0.0F) {
minecraft.getMusicManager().showNowPlayingToastIfNeeded();
}
soundManager.refreshCategoryVolume(category);
if (minecraft.level == null) {
SoundPreviewHandler.preview(soundManager, category, value.floatValue());
}
});
}
public OptionInstance<Boolean> showSubtitles() {
return this.showSubtitles;
}
public OptionInstance<Boolean> directionalAudio() {
return this.directionalAudio;
}
public OptionInstance<Boolean> backgroundForChatOnly() {
return this.backgroundForChatOnly;
}
public OptionInstance<Boolean> touchscreen() {
return this.touchscreen;
}
public OptionInstance<Boolean> fullscreen() {
return this.fullscreen;
}
public OptionInstance<Boolean> exclusiveFullscreen() {
return this.exclusiveFullscreen;
}
public OptionInstance<Boolean> bobView() {
return this.bobView;
}
public OptionInstance<Boolean> toggleCrouch() {
return this.toggleCrouch;
}
public OptionInstance<Boolean> toggleSprint() {
return this.toggleSprint;
}
public OptionInstance<Boolean> toggleAttack() {
return this.toggleAttack;
}
public OptionInstance<Boolean> toggleUse() {
return this.toggleUse;
}
public OptionInstance<Integer> sprintWindow() {
return this.sprintWindow;
}
public OptionInstance<Boolean> hideMatchedNames() {
return this.hideMatchedNames;
}
public OptionInstance<Boolean> showAutosaveIndicator() {
return this.showAutosaveIndicator;
}
public OptionInstance<Boolean> onlyShowSecureChat() {
return this.onlyShowSecureChat;
}
public OptionInstance<Boolean> saveChatDrafts() {
return this.saveChatDrafts;
}
private void setGraphicsPresetToCustom() {
if (!this.isApplyingGraphicsPreset) {
this.graphicsPreset.set(GraphicsPreset.CUSTOM);
if (this.minecraft.screen instanceof OptionsSubScreen optionsSubScreen) {
optionsSubScreen.resetOption(this.graphicsPreset);
}
}
}
public OptionInstance<Integer> fov() {
return this.fov;
}
public OptionInstance<Boolean> telemetryOptInExtra() {
return this.telemetryOptInExtra;
}
public OptionInstance<Double> screenEffectScale() {
return this.screenEffectScale;
}
public OptionInstance<Double> fovEffectScale() {
return this.fovEffectScale;
}
public OptionInstance<Double> darknessEffectScale() {
return this.darknessEffectScale;
}
public OptionInstance<Double> glintSpeed() {
return this.glintSpeed;
}
public OptionInstance<Double> glintStrength() {
return this.glintStrength;
}
public OptionInstance<Double> damageTiltStrength() {
return this.damageTiltStrength;
}
public OptionInstance<Double> gamma() {
return this.gamma;
}
public OptionInstance<Integer> guiScale() {
return this.guiScale;
}
public OptionInstance<ParticleStatus> particles() {
return this.particles;
}
public OptionInstance<NarratorStatus> narrator() {
return this.narrator;
}
public OptionInstance<String> soundDevice() {
return this.soundDevice;
}
public void onboardingAccessibilityFinished() {
this.onboardAccessibility = false;
this.save();
}
public OptionInstance<MusicManager.MusicFrequency> musicFrequency() {
return this.musicFrequency;
}
public OptionInstance<MusicToastDisplayState> musicToast() {
return this.musicToast;
}
public Options(Minecraft minecraft, File workingDirectory) {
this.minecraft = minecraft;
this.optionsFile = new File(workingDirectory, "options.txt");
boolean largeDistances = Runtime.getRuntime().maxMemory() >= 1000000000L;
this.renderDistance = new OptionInstance<>(
"options.renderDistance",
OptionInstance.noTooltip(),
(caption, value) -> genericValueLabel(caption, Component.translatable("options.chunks", value)),
new OptionInstance.IntRange(2, largeDistances ? 32 : 16, false),
12,
value -> {
operateOnLevelRenderer(LevelRenderer::needsUpdate);
this.setGraphicsPresetToCustom();
}
);
this.simulationDistance = new OptionInstance<>(
"options.simulationDistance",
OptionInstance.noTooltip(),
(caption, value) -> genericValueLabel(caption, Component.translatable("options.chunks", value)),
new OptionInstance.IntRange(SharedConstants.DEBUG_ALLOW_LOW_SIM_DISTANCE ? 2 : 5, largeDistances ? 32 : 16, false),
12,
value -> this.setGraphicsPresetToCustom()
);
this.syncWrites = Util.getPlatform() == Util.OS.WINDOWS;
this.load();
this.initialExclusiveFullscreen = this.exclusiveFullscreen.get();
}
public float getBackgroundOpacity(float defaultOpacity) {
return this.backgroundForChatOnly.get() ? defaultOpacity : this.textBackgroundOpacity().get().floatValue();
}
public int getBackgroundColor(float defaultOpacity) {
return ARGB.colorFromFloat(this.getBackgroundOpacity(defaultOpacity), 0.0F, 0.0F, 0.0F);
}
public int getBackgroundColor(int defaultColor) {
return this.backgroundForChatOnly.get() ? defaultColor : ARGB.colorFromFloat(this.textBackgroundOpacity.get().floatValue(), 0.0F, 0.0F, 0.0F);
}
private void processDumpedOptions(Options.OptionAccess access) {
access.process("ao", this.ambientOcclusion);
access.process("biomeBlendRadius", this.biomeBlendRadius);
access.process("chunkSectionFadeInTime", this.chunkSectionFadeInTime);
access.process("cutoutLeaves", this.cutoutLeaves);
access.process("enableVsync", this.enableVsync);
access.process("entityDistanceScaling", this.entityDistanceScaling);
access.process("entityShadows", this.entityShadows);
access.process("forceUnicodeFont", this.forceUnicodeFont);
access.process("japaneseGlyphVariants", this.japaneseGlyphVariants);
access.process("fov", this.fov);
access.process("fovEffectScale", this.fovEffectScale);
access.process("darknessEffectScale", this.darknessEffectScale);
access.process("glintSpeed", this.glintSpeed);
access.process("glintStrength", this.glintStrength);
access.process("graphicsPreset", this.graphicsPreset);
access.process("prioritizeChunkUpdates", this.prioritizeChunkUpdates);
access.process("fullscreen", this.fullscreen);
access.process("exclusiveFullscreen", this.exclusiveFullscreen);
access.process("gamma", this.gamma);
access.process("guiScale", this.guiScale);
access.process("maxAnisotropyBit", this.maxAnisotropyBit);
access.process("textureFiltering", this.textureFiltering);
access.process("maxFps", this.framerateLimit);
access.process("improvedTransparency", this.improvedTransparency);
access.process("inactivityFpsLimit", this.inactivityFpsLimit);
access.process("mipmapLevels", this.mipmapLevels);
access.process("narrator", this.narrator);
access.process("particles", this.particles);
access.process("reducedDebugInfo", this.reducedDebugInfo);
access.process("renderClouds", this.cloudStatus);
access.process("cloudRange", this.cloudRange);
access.process("renderDistance", this.renderDistance);
access.process("simulationDistance", this.simulationDistance);
access.process("screenEffectScale", this.screenEffectScale);
access.process("soundDevice", this.soundDevice);
access.process("vignette", this.vignette);
access.process("weatherRadius", this.weatherRadius);
}
private void processOptions(Options.FieldAccess access) {
this.processDumpedOptions(access);
access.process("autoJump", this.autoJump);
access.process("rotateWithMinecart", this.rotateWithMinecart);
access.process("operatorItemsTab", this.operatorItemsTab);
access.process("autoSuggestions", this.autoSuggestions);
access.process("chatColors", this.chatColors);
access.process("chatLinks", this.chatLinks);
access.process("chatLinksPrompt", this.chatLinksPrompt);
access.process("discrete_mouse_scroll", this.discreteMouseScroll);
access.process("invertXMouse", this.invertXMouse);
access.process("invertYMouse", this.invertYMouse);
access.process("realmsNotifications", this.realmsNotifications);
access.process("showSubtitles", this.showSubtitles);
access.process("directionalAudio", this.directionalAudio);
access.process("touchscreen", this.touchscreen);
access.process("bobView", this.bobView);
access.process("toggleCrouch", this.toggleCrouch);
access.process("toggleSprint", this.toggleSprint);
access.process("toggleAttack", this.toggleAttack);
access.process("toggleUse", this.toggleUse);
access.process("sprintWindow", this.sprintWindow);
access.process("darkMojangStudiosBackground", this.darkMojangStudiosBackground);
access.process("hideLightningFlashes", this.hideLightningFlash);
access.process("hideSplashTexts", this.hideSplashTexts);
access.process("mouseSensitivity", this.sensitivity);
access.process("damageTiltStrength", this.damageTiltStrength);
access.process("highContrast", this.highContrast);
access.process("highContrastBlockOutline", this.highContrastBlockOutline);
access.process("narratorHotkey", this.narratorHotkey);
this.resourcePacks = access.process("resourcePacks", this.resourcePacks, Options::readListOfStrings, GSON::toJson);
this.incompatibleResourcePacks = access.process("incompatibleResourcePacks", this.incompatibleResourcePacks, Options::readListOfStrings, GSON::toJson);
this.lastMpIp = access.process("lastServer", this.lastMpIp);
this.languageCode = access.process("lang", this.languageCode);
access.process("chatVisibility", this.chatVisibility);
access.process("chatOpacity", this.chatOpacity);
access.process("chatLineSpacing", this.chatLineSpacing);
access.process("textBackgroundOpacity", this.textBackgroundOpacity);
access.process("backgroundForChatOnly", this.backgroundForChatOnly);
this.hideServerAddress = access.process("hideServerAddress", this.hideServerAddress);
this.advancedItemTooltips = access.process("advancedItemTooltips", this.advancedItemTooltips);
this.pauseOnLostFocus = access.process("pauseOnLostFocus", this.pauseOnLostFocus);
this.overrideWidth = access.process("overrideWidth", this.overrideWidth);
this.overrideHeight = access.process("overrideHeight", this.overrideHeight);
access.process("chatHeightFocused", this.chatHeightFocused);
access.process("chatDelay", this.chatDelay);
access.process("chatHeightUnfocused", this.chatHeightUnfocused);
access.process("chatScale", this.chatScale);
access.process("chatWidth", this.chatWidth);
access.process("notificationDisplayTime", this.notificationDisplayTime);
this.useNativeTransport = access.process("useNativeTransport", this.useNativeTransport);
access.process("mainHand", this.mainHand);
access.process("attackIndicator", this.attackIndicator);
this.tutorialStep = access.process("tutorialStep", this.tutorialStep, TutorialSteps::getByName, TutorialSteps::getName);
access.process("mouseWheelSensitivity", this.mouseWheelSensitivity);
access.process("rawMouseInput", this.rawMouseInput);
access.process("allowCursorChanges", this.allowCursorChanges);
this.glDebugVerbosity = access.process("glDebugVerbosity", this.glDebugVerbosity);
this.skipMultiplayerWarning = access.process("skipMultiplayerWarning", this.skipMultiplayerWarning);
access.process("hideMatchedNames", this.hideMatchedNames);
this.joinedFirstServer = access.process("joinedFirstServer", this.joinedFirstServer);
this.syncWrites = access.process("syncChunkWrites", this.syncWrites);
access.process("showAutosaveIndicator", this.showAutosaveIndicator);
access.process("allowServerListing", this.allowServerListing);
access.process("onlyShowSecureChat", this.onlyShowSecureChat);
access.process("saveChatDrafts", this.saveChatDrafts);
access.process("panoramaScrollSpeed", this.panoramaSpeed);
access.process("telemetryOptInExtra", this.telemetryOptInExtra);
this.onboardAccessibility = access.process("onboardAccessibility", this.onboardAccessibility);
access.process("menuBackgroundBlurriness", this.menuBackgroundBlurriness);
this.startedCleanly = access.process("startedCleanly", this.startedCleanly);
access.process("musicToast", this.musicToast);
access.process("musicFrequency", this.musicFrequency);
for (KeyMapping keyMapping : this.keyMappings) {
String currentValue = keyMapping.saveString();
String newValue = access.process("key_" + keyMapping.getName(), currentValue);
if (!currentValue.equals(newValue)) {
keyMapping.setKey(InputConstants.getKey(newValue));
}
}
for (SoundSource source : SoundSource.values()) {
access.process("soundCategory_" + source.getName(), this.soundSourceVolumes.get(source));
}
for (PlayerModelPart part : PlayerModelPart.values()) {
boolean wasEnabled = this.modelParts.contains(part);
boolean isEnabled = access.process("modelPart_" + part.getId(), wasEnabled);
if (isEnabled != wasEnabled) {
this.setModelPart(part, isEnabled);
}
}
}
public void load() {
try {
if (!this.optionsFile.exists()) {
return;
}
CompoundTag rawOptions = new CompoundTag();
try (BufferedReader reader = Files.newReader(this.optionsFile, StandardCharsets.UTF_8)) {
reader.lines().forEach(line -> {
try {
Iterator<String> iterator = OPTION_SPLITTER.split(line).iterator();
rawOptions.putString(iterator.next(), iterator.next());
} catch (Exception var3) {
LOGGER.warn("Skipping bad option: {}", line);
}
});
}
final CompoundTag options = this.dataFix(rawOptions);
this.processOptions(
new Options.FieldAccess() {
{
Objects.requireNonNull(Options.this);
}
private @Nullable String getValue(String name) {
Tag tag = options.get(name);
if (tag == null) {
return null;
} else if (tag instanceof StringTag(String var7x)) {
return var7x;
} else {
throw new IllegalStateException("Cannot read field of wrong type, expected string: " + tag);
}
}
@Override
public <T> void process(String name, OptionInstance<T> option) {
String result = this.getValue(name);
if (result != null) {
JsonElement element = LenientJsonParser.parse(result.isEmpty() ? "\"\"" : result);
option.codec()
.parse(JsonOps.INSTANCE, element)
.ifError(error -> Options.LOGGER.error("Error parsing option value {} for option {}: {}", result, option, error.message()))
.ifSuccess(option::set);
}
}
@Override
public int process(String name, int current) {
String result = this.getValue(name);
if (result != null) {
try {
return Integer.parseInt(result);
} catch (NumberFormatException var5) {
Options.LOGGER.warn("Invalid integer value for option {} = {}", name, result, var5);
}
}
return current;
}
@Override
public boolean process(String name, boolean current) {
String result = this.getValue(name);
return result != null ? Options.isTrue(result) : current;
}
@Override
public String process(String name, String current) {
return MoreObjects.firstNonNull(this.getValue(name), current);
}
@Override
public float process(String name, float current) {
String result = this.getValue(name);
if (result == null) {
return current;
} else if (Options.isTrue(result)) {
return 1.0F;
} else if (Options.isFalse(result)) {
return 0.0F;
} else {
try {
return Float.parseFloat(result);
} catch (NumberFormatException var5) {
Options.LOGGER.warn("Invalid floating point value for option {} = {}", name, result, var5);
return current;
}
}
}
@Override
public <T> T process(String name, T current, Function<String, T> reader, Function<T, String> writer) {
String rawResult = this.getValue(name);
return rawResult == null ? current : reader.apply(rawResult);
}
}
);
options.getString("fullscreenResolution").ifPresent(fullscreenResolution -> this.fullscreenVideoModeString = fullscreenResolution);
KeyMapping.resetMapping();
} catch (Exception var7) {
LOGGER.error("Failed to load options", (Throwable)var7);
}
}
private static boolean isTrue(String value) {
return "true".equals(value);
}
private static boolean isFalse(String value) {
return "false".equals(value);
}
private CompoundTag dataFix(CompoundTag tag) {
int version = 0;
try {
version = tag.getString("version").map(Integer::parseInt).orElse(0);
} catch (RuntimeException var4) {
}
return DataFixTypes.OPTIONS.updateToCurrentVersion(this.minecraft.getFixerUpper(), tag, version);
}
public void save() {
try (final PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(this.optionsFile), StandardCharsets.UTF_8))) {
writer.println("version:" + SharedConstants.getCurrentVersion().dataVersion().version());
this.processOptions(
new Options.FieldAccess() {
{
Objects.requireNonNull(Options.this);
}
public void writePrefix(String name) {
writer.print(name);
writer.print(':');
}
@Override
public <T> void process(String name, OptionInstance<T> option) {
option.codec()
.encodeStart(JsonOps.INSTANCE, option.get())
.ifError(error -> Options.LOGGER.error("Error saving option {}: {}", option, error.message()))
.ifSuccess(element -> {
this.writePrefix(name);
writer.println(Options.GSON.toJson(element));
});
}
@Override
public int process(String name, int value) {
this.writePrefix(name);
writer.println(value);
return value;
}
@Override
public boolean process(String name, boolean value) {
this.writePrefix(name);
writer.println(value);
return value;
}
@Override
public String process(String name, String value) {
this.writePrefix(name);
writer.println(value);
return value;
}
@Override
public float process(String name, float value) {
this.writePrefix(name);
writer.println(value);
return value;
}
@Override
public <T> T process(String name, T value, Function<String, T> reader, Function<T, String> converter) {
this.writePrefix(name);
writer.println(converter.apply(value));
return value;
}
}
);
String fullscreenVideoModeString = this.getFullscreenVideoModeString();
if (fullscreenVideoModeString != null) {
writer.println("fullscreenResolution:" + fullscreenVideoModeString);
}
} catch (Exception var6) {
LOGGER.error("Failed to save options", (Throwable)var6);
}
this.broadcastOptions();
}
private @Nullable String getFullscreenVideoModeString() {
Window window = this.minecraft.getWindow();
if (window == null) {
return this.fullscreenVideoModeString;
} else {
return window.getPreferredFullscreenVideoMode().isPresent() ? window.getPreferredFullscreenVideoMode().get().write() : null;
}
}
public ClientInformation buildPlayerInformation() {
int parts = 0;
for (PlayerModelPart part : this.modelParts) {
parts |= part.getMask();
}
return new ClientInformation(
this.languageCode,
this.renderDistance.get(),
this.chatVisibility.get(),
this.chatColors.get(),
parts,
this.mainHand.get(),
this.minecraft.isTextFilteringEnabled(),
this.allowServerListing.get(),
this.particles.get()
);
}
public void broadcastOptions() {
if (this.minecraft.player != null) {
this.minecraft.player.connection.broadcastClientInformation(this.buildPlayerInformation());
}
}
public void setModelPart(PlayerModelPart part, boolean visible) {
if (visible) {
this.modelParts.add(part);
} else {
this.modelParts.remove(part);
}
}
public boolean isModelPartEnabled(PlayerModelPart part) {
return this.modelParts.contains(part);
}
public CloudStatus getCloudStatus() {
return this.cloudStatus.get();
}
public boolean useNativeTransport() {
return this.useNativeTransport;
}
public void loadSelectedResourcePacks(PackRepository repository) {
Set<String> selected = Sets.newLinkedHashSet();
Iterator<String> iterator = this.resourcePacks.iterator();
while (iterator.hasNext()) {
String id = iterator.next();
Pack pack = repository.getPack(id);
if (pack == null && !id.startsWith("file/")) {
pack = repository.getPack("file/" + id);
}
if (pack == null) {
LOGGER.warn("Removed resource pack {} from options because it doesn't seem to exist anymore", id);
iterator.remove();
} else if (!pack.getCompatibility().isCompatible() && !this.incompatibleResourcePacks.contains(id)) {
LOGGER.warn("Removed resource pack {} from options because it is no longer compatible", id);
iterator.remove();
} else if (pack.getCompatibility().isCompatible() && this.incompatibleResourcePacks.contains(id)) {
LOGGER.info("Removed resource pack {} from incompatibility list because it's now compatible", id);
this.incompatibleResourcePacks.remove(id);
} else {
selected.add(pack.getId());
}
}
repository.setSelected(selected);
}
public CameraType getCameraType() {
return this.cameraType;
}
public void setCameraType(CameraType cameraType) {
this.cameraType = cameraType;
}
private static List<String> readListOfStrings(String value) {
List<String> result = GsonHelper.fromNullableJson(GSON, value, LIST_OF_STRINGS_TYPE);
return (List<String>)(result != null ? result : Lists.newArrayList());
}
public File getFile() {
return this.optionsFile;
}
public String dumpOptionsForReport() {
final List<Pair<String, Object>> optionsForReport = new ArrayList<>();
this.processDumpedOptions(new Options.OptionAccess() {
{
Objects.requireNonNull(Options.this);
}
@Override
public <T> void process(String name, OptionInstance<T> option) {
optionsForReport.add(Pair.of(name, option.get()));
}
});
optionsForReport.add(Pair.of("fullscreenResolution", String.valueOf(this.fullscreenVideoModeString)));
optionsForReport.add(Pair.of("glDebugVerbosity", this.glDebugVerbosity));
optionsForReport.add(Pair.of("overrideHeight", this.overrideHeight));
optionsForReport.add(Pair.of("overrideWidth", this.overrideWidth));
optionsForReport.add(Pair.of("syncChunkWrites", this.syncWrites));
optionsForReport.add(Pair.of("useNativeTransport", this.useNativeTransport));
optionsForReport.add(Pair.of("resourcePacks", this.resourcePacks));
return optionsForReport.stream()
.sorted(Comparator.comparing(Pair::getFirst))
.map(e -> e.getFirst() + ": " + e.getSecond())
.collect(Collectors.joining(System.lineSeparator()));
}
public void setServerRenderDistance(int serverRenderDistance) {
this.serverRenderDistance = serverRenderDistance;
}
public int getEffectiveRenderDistance() {
return this.serverRenderDistance > 0 ? Math.min(this.renderDistance.get(), this.serverRenderDistance) : this.renderDistance.get();
}
private static Component pixelValueLabel(Component caption, int value) {
return Component.translatable("options.pixel_value", caption, value);
}
private static Component percentValueLabel(Component caption, double value) {
return Component.translatable("options.percent_value", caption, (int)(value * 100.0));
}
public static Component genericValueLabel(Component caption, Component value) {
return Component.translatable("options.generic_value", caption, value);
}
public static Component genericValueLabel(Component caption, int value) {
return genericValueLabel(caption, Component.literal(Integer.toString(value)));
}
public static Component genericValueOrOffLabel(Component caption, int value) {
return value == 0 ? genericValueLabel(caption, CommonComponents.OPTION_OFF) : genericValueLabel(caption, value);
}
private static Component percentValueOrOffLabel(Component caption, double value) {
return value == 0.0 ? genericValueLabel(caption, CommonComponents.OPTION_OFF) : percentValueLabel(caption, value);
}
@OnlyIn(Dist.CLIENT)
private interface FieldAccess extends Options.OptionAccess {
int process(String name, int value);
boolean process(String name, boolean value);
String process(String name, String value);
float process(String name, float value);
<T> T process(String name, T value, Function<String, T> reader, Function<T, String> writer);
}
@OnlyIn(Dist.CLIENT)
private interface OptionAccess {
<T> void process(String name, OptionInstance<T> option);
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
InputConstants.getKey()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RenderSystem.getDevice()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
SharedConstants.getCurrentVersion()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
AttackIndicatorStatus.values()
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
CloudStatus.values()
- 引用位置:
-
- 引用位置:
参数/字段/方法调用/返回值 - 关联成员:
GraphicsPreset.values()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
InactivityFpsLimit.values()
- 引用位置:
-
- 引用位置:
字段/方法调用/构造调用 - 关联成员:
KeyMapping(), KeyMapping.resetMapping()
- 引用位置:
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
Minecraft.getInstance()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
MusicToastDisplayState.values()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
NarratorStatus.values()
- 引用位置:
-
- 引用位置:
字段/方法调用/构造调用/返回值 - 关联成员:
ClampingLazyMaxIntRange(), IntRange(), OptionInstance.ClampingLazyMaxIntRange(), OptionInstance.IntRange(), OptionInstance.cachedConstantTooltip(), OptionInstance.createBoolean(), OptionInstance.noTooltip()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
PrioritizeChunkUpdates.values()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
TextureFilteringMethod.values()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ToggleKeyMapping()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ChatComponent.defaultUnfocusedPct(), ChatComponent.getHeight(), ChatComponent.getWidth()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Tooltip.create()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
System.lineSeparator()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
SimpleSoundInstance.forUI()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
MusicManager.MusicFrequency.values()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
SoundPreviewHandler.preview()
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
参数/构造调用/返回值 - 关联成员:
CompoundTag()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
CommonComponents.joinLines(), CommonComponents.optionStatus()
- 引用位置:
-
- 引用位置:
参数/字段/方法调用/返回值 - 关联成员:
Component.literal(), Component.translatable()
- 引用位置:
-
- 引用位置:
构造调用/返回值 - 关联成员:
ClientInformation()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
ParticleStatus.values()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
SoundSource.values()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ARGB.colorFromFloat()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
GsonHelper.fromNullableJson()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
LenientJsonParser.parse()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Mth.floor()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.getPlatform(), Util.makeEnumMap()
- 引用位置:
-
- 引用位置:
参数/字段/构造调用/返回值 - 关联成员:
File()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
HumanoidArm.values()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
ChatVisiblity.values()
- 引用位置:
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
PlayerModelPart.values()
- 引用位置: