3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/input/KeyboardType.h"
7#include "mc/client/options/AutoUpdateMode.h"
8#include "mc/client/options/DebugHudOptions.h"
9#include "mc/client/options/RealmsEnvironment.h"
10#include "mc/client/options/SplitScreenDirection.h"
11#include "mc/client/options/XboxSandboxEnvironment.h"
12#include "mc/client/store/DisplayLoggedErrorType.h"
13#include "mc/deps/core/file/PathBuffer.h"
14#include "mc/deps/core/platform/FileStorageDirectory.h"
15#include "mc/deps/core/utility/NonOwnerPointer.h"
16#include "mc/deps/input/InputMode.h"
17#include "mc/input/NewInteractionModel.h"
18#include "mc/network/DevConnectionQuality.h"
19#include "mc/options/GraphicsMode.h"
20#include "mc/options/IOptionsReader.h"
21#include "mc/options/TargetRenderAPI.h"
22#include "mc/options/option_types/OptionID.h"
23#include "mc/options/option_types/OptionResetFlags.h"
24#include "mc/platform/diagnostics/bedrock_log/LogCategory.h"
42 enum class SaveRequestMode :
int {};
47 virtual ~IOptions() =
default;
49 virtual ::std::shared_ptr<::IOptions> sharedFromThis() = 0;
51 virtual ::std::shared_ptr<::IOptions const> sharedFromThis()
const = 0;
53 virtual ::Option& _registerOption(::std::unique_ptr<::Option>) = 0;
55 virtual void load(::Core::PathBuffer<::std::string>) = 0;
57 virtual void tickSaveTimer() = 0;
59 virtual void notifySaveAllowed() = 0;
61 virtual void saveIfNeeded() = 0;
63 virtual ::OptionSaveDeferral requestSaveDeferral() = 0;
65 virtual void reset(::OptionResetFlags, ::InputMode) = 0;
67 virtual bool getPrimaryUserStatus()
const = 0;
69 virtual void setClientInstanceCoordinator(::Bedrock::NonOwnerPointer<::ClientInstanceEventCoordinator>
const&) = 0;
71 virtual bool isValidOption(::OptionID)
const = 0;
73 virtual ::gsl::not_null<::Option*> get(::OptionID) = 0;
75 virtual ::std::optional<::Option*> getIfValid(::OptionID) = 0;
77 virtual ::std::optional<::Option const*> getIfValid(::OptionID)
const = 0;
79 virtual void getTelemetryOptions(::std::vector<::OptionID>&) = 0;
81 virtual void refreshRenderDistanceLevels() = 0;
83 virtual bool isLoadInProgress() = 0;
85 virtual void addObserver(::OptionsObserver&) = 0;
87 virtual void loadOptionsFromString(::std::string) = 0;
89 virtual void elevateSaveRequestMode(::IOptions::SaveRequestMode) = 0;
91 virtual ::ChatOptions
const& getChatOptions()
const = 0;
93 virtual ::ChatOptions& getChatOptions() = 0;
95 virtual ::std::array<::std::unique_ptr<::Option>, 777>
const& getAllRegisteredOptions() = 0;
97 virtual void forEachOption(::std::function<
void(::Option*)>) = 0;
99 virtual bool consumeDevOptionsDirty() = 0;
101 virtual void dumpOptionsToLogFile()
const = 0;
103 virtual void updateInputMode(::InputMode) = 0;
105 virtual void setMainVolume(
float) = 0;
107 virtual float getMainVolume()
const = 0;
109 virtual void setMusicVolume(
float) = 0;
111 virtual float getMusicVolume()
const = 0;
113 virtual void setSoundVolume(
float) = 0;
115 virtual float getSoundVolume()
const = 0;
117 virtual void setTTSVolume(
float) = 0;
119 virtual float getTTSVolume()
const = 0;
121 virtual float getChatMessageDuration()
const = 0;
123 virtual float getToastNotificationDuration()
const = 0;
125 virtual void setSensitivity(
float, ::InputMode) = 0;
127 virtual float getSensitivity(::InputMode)
const = 0;
129 virtual void setSpyglassDamping(
float, ::InputMode) = 0;
131 virtual float getSpyglassDamping(::InputMode)
const = 0;
133 virtual void setDwellBeforeDrag(
float) = 0;
135 virtual float getDwellBeforeDrag()
const = 0;
137 virtual void setStackSplittingTrigger(
float) = 0;
139 virtual float getStackSplittingTrigger()
const = 0;
141 virtual float getGameSensitivity(::InputMode)
const = 0;
143 virtual void setFileStorageLocation(::FileStorageDirectory, ::std::function<
void(
bool)>) = 0;
145 virtual ::FileStorageDirectory getFileStorageLocation()
const = 0;
147 virtual bool getInvertYMouse(::InputMode)
const = 0;
149 virtual int getViewDistanceChunks()
const = 0;
151 virtual int getDefaultViewDistanceChunks(::GraphicsMode)
const = 0;
153 virtual int getMaxViewDistanceChunksRaw()
const = 0;
155 virtual float getParticleViewDistance()
const = 0;
157 virtual bool getBobView()
const = 0;
159 virtual float getDamageBobStrength()
const = 0;
161 virtual bool getCameraShake()
const = 0;
163 virtual bool getHideEndFlash()
const = 0;
165 virtual bool getIsDitheringEnabledBlocks()
const = 0;
167 virtual bool getIsDitheringEnabledMobs()
const = 0;
169 virtual void setResetPlayerAlignment(
bool) = 0;
171 virtual bool getResetPlayerAlignment()
const = 0;
173 virtual ::TargetRenderAPI getTargetRenderAPI()
const = 0;
175 virtual bool getTransparentLeaves()
const = 0;
177 virtual bool getFancyBubbles()
const = 0;
179 virtual bool getSmoothLighting()
const = 0;
181 virtual bool getGuiAccessibilityScaling()
const = 0;
183 virtual bool getRayTracing()
const = 0;
185 virtual bool getDeferred()
const = 0;
187 virtual int getGraphicsQualityPresetMode()
const = 0;
189 virtual int getDeferredTargetFrameRate()
const = 0;
191 virtual bool getUseMouseForDigging()
const = 0;
193 virtual bool isLeftHanded()
const = 0;
195 virtual bool isHotbarOnlyTouch()
const = 0;
197 virtual bool getDestroyVibration(::InputMode)
const = 0;
199 virtual bool getSplitVibration(::InputMode)
const = 0;
201 virtual bool getAutoJump(::InputMode)
const = 0;
203 virtual void setFullscreen(
bool) = 0;
205 virtual bool getFullscreen()
const = 0;
207 virtual void toggleFullscreen() = 0;
209 virtual ::GamePadRemappingLayout& getGamePadRemapping() = 0;
211 virtual ::std::shared_ptr<::KeyboardRemappingLayout> getCurrentKeyboardRemapping()
const = 0;
213 virtual ::std::shared_ptr<::KeyboardRemappingLayout> getKeyboardRemappingByType(::KeyboardType)
const = 0;
215 virtual void setLanguage(::std::string
const&) = 0;
217 virtual ::std::string getLanguage()
const = 0;
219 virtual void setDifficulty(
int) = 0;
221 virtual void setHideGUI(
bool) = 0;
223 virtual bool getHideHud()
const = 0;
225 virtual bool getHideHand()
const = 0;
227 virtual void setHideToolTips(
bool) = 0;
229 virtual bool getHideToolTips()
const = 0;
231 virtual void setHidePaperDoll(
bool) = 0;
233 virtual bool getHidePaperDoll()
const = 0;
235 virtual void setIngamePlayerNames(
bool) = 0;
237 virtual bool getIngamePlayerNames()
const = 0;
239 virtual void setSplitscreenIngamePlayerNames(
bool) = 0;
241 virtual bool getSplitscreenIngamePlayerNames()
const = 0;
243 virtual void setInterfaceOpacity(
float) = 0;
245 virtual float getInterfaceOpacity()
const = 0;
247 virtual void setSplitscreenInterfaceOpacity(
float) = 0;
249 virtual float getSplitscreenInterfaceOpacity()
const = 0;
251 virtual void setShowAutoSaveIcon(
bool) = 0;
253 virtual bool getShowAutoSaveIcon()
const = 0;
255 virtual void setSplitscreenDirection(
int) = 0;
257 virtual ::SplitScreenDirection getSplitscreenDirection()
const = 0;
259 virtual void setHideScreens(
bool) = 0;
261 virtual bool getHideScreens()
const = 0;
263 virtual void setHideItemInHand(
bool) = 0;
265 virtual bool getHideItemInHand()
const = 0;
267 virtual bool getScreenAnimations()
const = 0;
269 virtual void setPlayerViewPerspective(
int) = 0;
271 virtual int getPlayerViewPerspective()
const = 0;
273 virtual void setForceUseUnsortedPolys(
bool) = 0;
275 virtual bool getForceUseUnsortedPolys()
const = 0;
277 virtual void setRenderDebug(::DebugHudOptions) = 0;
279 virtual ::DebugHudOptions getRenderDebug()
const = 0;
281 virtual bool getRemoteImguiEnabled()
const = 0;
283 virtual void setRemoteImguiEnabled(
bool) = 0;
285 virtual float getGamma()
const = 0;
287 virtual void setMSAA(
int) = 0;
289 virtual void setTexelAA(
bool) = 0;
291 virtual void setFixedCamera(
bool) = 0;
293 virtual bool getFixedCamera()
const = 0;
295 virtual void setSkinId(::std::string
const&) = 0;
297 virtual ::std::string
const& getSkinId()
const = 0;
299 virtual void setLastCustomSkinId(::std::string
const&) = 0;
301 virtual ::std::string
const& getLastCustomSkinId()
const = 0;
303 virtual void setRecentSkinIds(::std::vector<::std::string>
const&) = 0;
305 virtual ::std::vector<::std::string>
const& getRecentSkinIds() = 0;
307 virtual bool getFovToggle()
const = 0;
309 virtual void setServerVisible(
bool) = 0;
311 virtual bool getServerVisible()
const = 0;
313 virtual void setSplitControls(
bool) = 0;
315 virtual bool getSplitControls()
const = 0;
317 virtual bool getSwapJumpAndSneak()
const = 0;
319 virtual bool getFancySkies()
const = 0;
321 virtual void setRenderClouds(
bool) = 0;
323 virtual bool getRenderClouds()
const = 0;
325 virtual bool getDevAutoLoadLevel()
const = 0;
327 virtual bool getDevAssertionsDebugBreak()
const = 0;
329 virtual bool getDevAssertionsShowDialog()
const = 0;
331 virtual bool getDevShowDisplayLoggedError()
const = 0;
333 virtual bool getDevShowDisplayLoggedError(::DisplayLoggedErrorType)
const = 0;
335 virtual void setDevShowDevConsoleButton(
bool) = 0;
337 virtual bool getDevShowDevConsoleButton()
const = 0;
339 virtual bool getDevIgnoreUserInput()
const = 0;
341 virtual bool getDevDisplayTreatmentPanel()
const = 0;
343 virtual void setDevDisplayTreatmentPanel(
bool) = 0;
345 virtual void setDevShowMinecraftTCUIReplacement(
bool) = 0;
347 virtual bool getDevShowMinecraftTCUIReplacement()
const = 0;
349 virtual bool getDevCreateRealmWithoutPurchase()
const = 0;
351 virtual bool getDevDisableConnectedStoragePush()
const = 0;
353 virtual bool getDevDisableConnectedStoragePull()
const = 0;
355 virtual void setDevFindMobs(
bool) = 0;
357 virtual bool getDevFindMobs()
const = 0;
359 virtual void setDevRenderBoundingBoxes(
bool) = 0;
361 virtual void setDevRenderPaths(
bool) = 0;
363 virtual void setDevRenderMobInfoState(
bool) = 0;
365 virtual void setDevRenderGoalState(
bool) = 0;
367 virtual void setDevRenderSchedulerInfo(
bool) = 0;
369 virtual void setDevRenderCoordinateSystems(
bool) = 0;
371 virtual bool getDevRenderCoordinateSystems()
const = 0;
373 virtual bool getDevResetClientId()
const = 0;
375 virtual void setDevLogFlushImmediate(
bool) = 0;
377 virtual bool getDevLogFlushImmediate()
const = 0;
379 virtual void setDevLogTimestamp(
bool) = 0;
381 virtual bool getDevLogTimestamp()
const = 0;
383 virtual void setDevLogTrace(
bool) = 0;
385 virtual bool getDevLogTrace()
const = 0;
387 virtual void setDevLogArea(
bool) = 0;
389 virtual bool getDevLogArea()
const = 0;
391 virtual void setDevLogPriority(
bool) = 0;
393 virtual bool getDevLogPriority()
const = 0;
395 virtual void setDevLogThread(
bool) = 0;
397 virtual bool getDevLogThread()
const = 0;
399 virtual void setDevLogAppend(
bool) = 0;
401 virtual bool getDevLogAppend()
const = 0;
403 virtual void setDevLogProcessId(
bool) = 0;
405 virtual bool getDevLogProcessId()
const = 0;
407 virtual void setDevLogThreadId(
bool) = 0;
409 virtual bool getDevLogThreadId()
const = 0;
411 virtual void setDevLogMessageId(
bool) = 0;
413 virtual bool getDevLogMessageId()
const = 0;
415 virtual void setDevLogSilentLogging(
bool) = 0;
417 virtual bool getDevLogSilentLogging()
const = 0;
419 virtual void setDevLogPriorityFilter(::std::string
const&) = 0;
421 virtual ::std::string
const& getDevLogPriorityFilter()
const = 0;
423 virtual void setDevLogAreaFilter(::std::string
const&) = 0;
425 virtual ::std::string
const& getDevLogAreaFilter()
const = 0;
427 virtual void setDevGameEventRetentionTicks(ushort) = 0;
429 virtual void setDevDeepDarkDebugRender(
bool) = 0;
431 virtual bool isLogCategoryEnabled(::BedrockLog::LogCategory)
const = 0;
433 virtual bool getDevEnableProfilerOutput() = 0;
435 virtual bool getDevAddUsersSilently()
const = 0;
437 virtual int getDevBenchmarkModeTime() = 0;
439 virtual bool getDevDisableClientBlobCache()
const = 0;
441 virtual bool getDevClientBlobCacheOnLocalServer()
const = 0;
443 virtual void setLogFlushDelay(
int) = 0;
445 virtual int getLogFlushDelay() = 0;
447 virtual int getAutomationParallelSlices()
const = 0;
449 virtual int getAutomationParallelCurrentSlice()
const = 0;
451 virtual bool getIsAutomationRun()
const = 0;
453 virtual bool getShouldQuitAppAfterTesting()
const = 0;
455 virtual bool shouldUploadTestArtifacts()
const = 0;
457 virtual bool hasAutomationTestRunTimedOut()
const = 0;
459 virtual bool hasAutomationTestRunReachedCrashLimit()
const = 0;
461 virtual bool shouldAppendDebugLogTimestamp()
const = 0;
463 virtual ::std::string getAutomationServerIp()
const = 0;
465 virtual ::std::string getAutomationServerPort()
const = 0;
467 virtual ::std::string getAutomationArtifactUploadSas()
const = 0;
469 virtual ::std::string getAutomationArtifactUploadUrl()
const = 0;
471 virtual ::std::string getAutomationRelativeBlobpath()
const = 0;
473 virtual ::std::string getAutomationFunctionalTestTags()
const = 0;
475 virtual ::std::string getAutomationServerTestTags()
const = 0;
477 virtual ::std::string getAutomationUnitTestTags()
const = 0;
479 virtual ::std::string getAutomationFunctionalBrokenTestTags()
const = 0;
481 virtual ::std::string getAutomationServerBrokenTestTags()
const = 0;
483 virtual ::std::string getAutomationUnitBrokenTestTags()
const = 0;
485 virtual ::std::string getAutomationTestBuildID()
const = 0;
487 virtual ::std::string getAutomationUploadToken()
const = 0;
489 virtual ::std::string getAutomationEnabledFeatures()
const = 0;
491 virtual ::std::string getAutomationEnabledExperiments()
const = 0;
493 virtual bool getAutomationShouldGroupServerTests()
const = 0;
495 virtual bool getAutomationUnrandomTestsEnabled()
const = 0;
497 virtual bool getAutomationRunEntireServerTestGroup()
const = 0;
499 virtual bool getAutomationRunServerTestAfterEachTest()
const = 0;
501 virtual ::std::string
const& getTestBranchName()
const = 0;
503 virtual bool getFunctionalTestBlockInput()
const = 0;
505 virtual bool shouldBlockUserInput()
const = 0;
507 virtual bool hasSetSafeZone()
const = 0;
509 virtual bool getAutomationDisableTreatmentPackDownloads()
const = 0;
511 virtual bool getAutomationProfilerCaptureEnabled()
const = 0;
513 virtual bool getAutomationProfilerFlipEnabled()
const = 0;
515 virtual int getAutomationRepeatCount()
const = 0;
517 virtual int getAutomationSoakTestRunDurationMinutes()
const = 0;
519 virtual bool getAutomationRerunFailuresOnly()
const = 0;
521 virtual int getAutomationUnitPerTestcaseTimeout()
const = 0;
523 virtual int getAutomationFunctionalPerTestcaseTimeout()
const = 0;
525 virtual int getAutomationServerPerTestcaseTimeout()
const = 0;
527 virtual void setAutomationFunctionalBrokenTestTags(::std::string
const&) = 0;
529 virtual void setAutomationUnitBrokenTestTags(::std::string
const&) = 0;
531 virtual void setAutomationUploadToken(::std::string
const&) = 0;
533 virtual bool getDevAchievmentsAlwaysEnabled() = 0;
535 virtual bool shouldServerTestsLogWorlds()
const = 0;
537 virtual bool shouldServerTestsAssertOnLevelDiff()
const = 0;
539 virtual ::std::string getAutomationMultiplayerSessionName()
const = 0;
541 virtual int getAutomationMultiplayerDeviceIndex()
const = 0;
543 virtual ::std::vector<::std::string> getAutomationMultiplayerUserAccounts()
const = 0;
545 virtual ::DevConnectionQuality getDevConnectionQuality()
const = 0;
547 virtual int getDevRenderAttachPos()
const = 0;
549 virtual void setMultiPlayerGame(
bool) = 0;
551 virtual bool getMultiPlayerGame()
const = 0;
553 virtual void setXboxLiveVisible(
bool) = 0;
555 virtual bool wasLoggedInLastSession() = 0;
557 virtual void setHasEverLoggedIntoXbl(
bool) = 0;
559 virtual bool getHasEverLoggedIntoXbl()
const = 0;
561 virtual void setHasShownFirstLaunchWelcomeModal(
bool) = 0;
563 virtual bool getHasShownFirstLaunchWelcomeModal()
const = 0;
565 virtual void setHasShownFirstSocialWelcomeModal(
bool) = 0;
567 virtual bool getHasShownFirstSocialWelcomeModal()
const = 0;
569 virtual void setDoNotShowFriendsListFTUE(
bool) = 0;
571 virtual bool getDoNotShowFriendsListFTUE()
const = 0;
573 virtual void setHasShownBannedModalAtStartup(
bool) = 0;
575 virtual bool getHasShownBannedModalAtStartup()
const = 0;
577 virtual void setAcknowledgedAutoSave(
bool) = 0;
579 virtual bool getAcknowledgedAutoSave()
const = 0;
581 virtual void setRealmsInviteShowFriendsOption(
bool) = 0;
583 virtual bool getRealmsInviteShowFriendsOption()
const = 0;
585 virtual void setNumberOfOwnedRealms(
int) = 0;
587 virtual int getNumberOfOwnedRealms()
const = 0;
589 virtual void setNumberOfFriendsRealms(
int) = 0;
591 virtual int getNumberOfFriendsRealms()
const = 0;
593 virtual void setCreateRealmUpsellCount(
int) = 0;
595 virtual int getCreateRealmUpsellCount()
const = 0;
597 virtual void setSaveAndQuitCount(
int) = 0;
599 virtual int getSaveAndQuitCount()
const = 0;
601 virtual void setIsRatingsPromptShown(
bool) = 0;
603 virtual bool getIsRatingsPromptShown()
const = 0;
605 virtual void setShowRealmsTrialButtonFromPlayScreen(
bool) = 0;
607 virtual bool getShowRealmsTrialButtonFromPlayScreen()
const = 0;
609 virtual ::AutoUpdateMode getAutoUpdateMode()
const = 0;
611 virtual void setCanUseCellularData(
bool) = 0;
613 virtual bool getCanUseCellularData()
const = 0;
615 virtual void setRequireWebsocketEncryption(
bool) = 0;
617 virtual bool getRequireWebsocketEncryption()
const = 0;
619 virtual void setWebsocketsEnabled(
bool) = 0;
621 virtual bool getWebsocketsEnabled()
const = 0;
623 virtual void setUseIPv6Only(
bool) = 0;
625 virtual bool getUseIPv6Only()
const = 0;
627 virtual void setUseRetailXboxSandbox(
bool const) = 0;
629 virtual bool getUseRetailXboxSandbox()
const = 0;
631 virtual void setXboxLiveSandbox(::XboxSandboxEnvironment) = 0;
633 virtual ::std::string
const& getXboxLiveSandbox()
const = 0;
635 virtual void setRealmsEnvironment(::RealmsEnvironment) = 0;
637 virtual ::RealmsEnvironment getRealmsEnvironment()
const = 0;
639 virtual void setRealmsEndpoint(::std::string
const&) = 0;
641 virtual ::std::string
const& getRealmsEndpoint()
const = 0;
643 virtual ::std::string
const& getRealmsV2Endpoint()
const = 0;
645 virtual void setRealmsEndpointPayment(::std::string
const&) = 0;
647 virtual ::std::string
const& getRealmsEndpointPayment()
const = 0;
649 virtual void setRealmsRelyingParty(::std::string
const&) = 0;
651 virtual ::std::string
const& getRealmsRelyingParty()
const = 0;
653 virtual void setRealmsRelyingPartyPayment(::std::string
const&) = 0;
655 virtual ::std::string
const& getRealmsRelyingPartyPayment()
const = 0;
657 virtual void setStoreHasPurchasedCoins(
bool) = 0;
659 virtual bool getStoreHasPurchasedCoins()
const = 0;
661 virtual void setShowUnfulfilledPurchaseModal(
bool) = 0;
663 virtual bool getShowUnfulfilledPurchaseModal()
const = 0;
665 virtual void setSwitchCoinDebug(
bool) = 0;
667 virtual bool getSwitchCoinDebug()
const = 0;
669 virtual float getDefaultPlatformSafeZoneX()
const = 0;
671 virtual float getDefaultPlatformSafeZoneY()
const = 0;
673 virtual bool getServerboundClientDiagnosticsEnabled()
const = 0;
675 virtual ::ScriptDebuggerSettings getScriptDebuggerSettings()
const = 0;
677 virtual ::Scripting::WatchdogSettings getScriptWatchdogSettings()
const = 0;
679 virtual void setEduHasLoggedIn(
bool) = 0;
681 virtual bool getEduHasLoggedIn()
const = 0;
683 virtual void setShownPlatformNetworkConnectConfirmation(
bool) = 0;
685 virtual bool getShownPlatformNetworkConnectConfirmation()
const = 0;
687 virtual void setShownPlatformPremiumUpsell(
bool) = 0;
689 virtual bool getShownPlatformPremiumUpsell()
const = 0;
691 virtual void setAppLaunchedCount(
int) = 0;
693 virtual int getAppLaunchedCount()
const = 0;
695 virtual void setEcoMode(
bool) = 0;
697 virtual bool getEcoMode()
const = 0;
699 virtual void setEduCloudBackupToggle(
bool) = 0;
701 virtual bool getEduCloudBackupToggle()
const = 0;
703 virtual void setUseFontOverrides(
bool) = 0;
705 virtual bool getUseFontOverrides()
const = 0;
707 virtual ::NewInteractionModel getEffectiveTouchScheme()
const = 0;
709 virtual void setSaveDeferralCount(
int) = 0;
711 virtual int getSaveDeferralCount()
const = 0;
713 virtual void setForceVibrantVisualsDisabled(
bool) = 0;
Definition ClientInstanceEventCoordinator.h:16
Definition GamePadRemappingLayout.h:5
Definition IOptionsReader.h:16
Definition KeyboardRemappingLayout.h:5
Definition OptionsObserver.h:5
Definition ChatOptions.h:5
Definition OptionSaveDeferral.h:5
Definition ScriptDebuggerSettings.h:8
Definition WatchdogSettings.h:7