From ea52a3bb18a26bb3e490d6660748bff8ee5bea7b Mon Sep 17 00:00:00 2001 From: hypercross Date: Wed, 10 Dec 2025 10:08:03 +0800 Subject: [PATCH] feat: better days --- .../config/betterdays-client.toml | 19 ++ .../config/betterdays-common.toml | 192 ++++++++++++++++++ .../config/map_atlases-common.toml | 2 +- 3 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 configureddefaults/config/betterdays-client.toml create mode 100644 configureddefaults/config/betterdays-common.toml diff --git a/configureddefaults/config/betterdays-client.toml b/configureddefaults/config/betterdays-client.toml new file mode 100644 index 0000000..3726fd5 --- /dev/null +++ b/configureddefaults/config/betterdays-client.toml @@ -0,0 +1,19 @@ + +[gui] + #Sets the screen alignment of the bed clock. + #Allowed Values: TOP_LEFT, TOP_CENTER, TOP_RIGHT, CENTER_LEFT, CENTER_CENTER, CENTER_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT + clockAlignment = "TOP_RIGHT" + #Sets the scale of the bed clock. + #Range: > 1 + clockScale = 32 + #Sets the distance between the clock and the edge of the screen. + #Unused if clockAlignment is CENTER_CENTER. + #Range: > 0 + clockMargin = 16 + #This setting prevents clock wobble when getting in bed by updating the clock's position every tick. + #As a side-effect, the clock won't wobble when first viewed as it does in vanilla. This setting is + #unused if displayBedClock is false. + preventClockWobble = true + #This setting blacklists the sky rendering for specific dimensions. Like in the Aether if using /time set command, the sky jitters. Adding to the blacklist will prevent this behavior. + blacklistDimensions = ["aether:the_aether"] + diff --git a/configureddefaults/config/betterdays-common.toml b/configureddefaults/config/betterdays-common.toml new file mode 100644 index 0000000..550df3b --- /dev/null +++ b/configureddefaults/config/betterdays-common.toml @@ -0,0 +1,192 @@ + +[time] + #The speed at which time passes during the day. + #Day is defined as any time between dayStart (see below) and nightStart (see below) the next day. + #This is the RATIO of time passing relative to vanilla. + #Vanilla speed: 1.0 + #Range: 0.0 ~ 24000.0 + daySpeed = 1.09 + #The speed at which time passes during the night. + #Night is defined as any time between dayStart (see below) and nightStart (see below). + #This is the RATIO of time passing relative to vanilla. + #Vanilla speed: 1.0 + #Range: 0.0 ~ 24000.0 + nightSpeed = 0.92 + #An alternative way to set day speed. This setting is mutually exclusive with daySpeed. + #If both are set, speedMethod (see below) determines which setting is used. + #This setting defines the length of the day in real-world minutes. + #Vanilla length: 10.0 minutes + #Range: 0.1 ~ 10000.0 + daySpeedMinutes = 10.0 + #An alternative way to set night speed. This setting is mutually exclusive with nightSpeed. + #If both are set, speedMethod (see below) determines which setting is used. + #This setting defines the length of the night in real-world minutes. + #Vanilla length: 10.0 minutes + #Range: 0.1 ~ 10000.0 + nightSpeedMinutes = 10.0 + #Determines which method is used to set day and night speed. + #RATIO: Uses daySpeed and nightSpeed settings. + #MINUTES: Uses daySpeedMinutes and nightSpeedMinutes settings. + #REALTIME: Sets day and night to 12 real-world hours each. + #Allowed Values: RATIO, MINUTES, REALTIME + speedMethod = "RATIO" + #The time to start day. This is configurable within the time the sun appears and day starts. + #Default: 23500 + #Range: 22300.0 ~ 24000.0 + dayStart = 23500.0 + #The time to start night. This is configurable within the time sunset starts and night starts. + #Default: 12500 + #Range: 12000.0 ~ 13000.0 + nightStart = 12500.0 + #Enabling this will allow the setting of an infinite amount of time speeds defined as pairs in the form: + #(currentTick, desiredSpeed) + #where between each value bezier spline interpolation is performed for smooth transitioning + #The two default pairs at 0 and 24000 are necessary as they act as bounds. However + #The time speed value for each of them can be freely modified + enableInterpolatedTime = false + #The value that determines the smoothing factor in the interpolation algorithm. + #A high value will make the interpolation softer and curvier + #A low value will make the interpolation closer to a piecewise function + #Range: 0.0 ~ 10.0 + interpolatedTimeSmoothingFactor = 0.25 + #These are the pairs that define what speed time should run at, at the specified day/night tick + #The two default pairs need to exist, but their time speed values can be modified + interpolatedTimeList = ["0,1.0", "24000,1.0"] + + [time.effects] + #When applied, this effect syncs the passage of weather with the current speed of time. + #I.e., as time moves faster, rain stops faster. Clear weather is not affected. + #When set to SLEEPING, this effect only applies when at least one player is sleeping in a dimension. + #Note: This setting is not applicable if game rule doWeatherCycle is false. + #Allowed Values: NEVER, ALWAYS, SLEEPING + weatherEffect = "SLEEPING" + #When applied, this effect syncs the random tick speed with the current speed of time, forcing + #crop, tree, and grass growth to occur at baseRandomTickSpeed multiplied by the current time-speed. + #When set to SLEEPING, randomTickSpeed is set to baseRandomTickSpeed unless at least one player is sleeping in a dimension. + #More information on the effects of random tick speed can be found here: https://minecraft.wiki/w/Tick#Random_tick + #WARNING: This setting overwrites the randomTickSpeed game rule. To modify the base random tick speed, + #use the baseRandomTickSpeed setting instead of changing the game rule directly. + #This effect has a minimum randomTickSpeed of 1 if time speed is less than 1.0. + #Allowed Values: NEVER, ALWAYS, SLEEPING + randomTickEffect = "NEVER" + #The base random tick speed used by the randomTickEffect time effect. + #Range: > 0 + baseRandomTickSpeed = 3 + #When applied, this effect progresses potion effects to match the rate of the current time-speed. + #This effect does not apply if time speed is 1.0 or less. + #THIS MAY HAVE A NEGATIVE IMPACT ON PERFORMANCE IN SERVERS WITH MANY PLAYERS. + #When set to ALWAYS, this effect applies to all players in the dimension, day or night. + #When set to SLEEPING, this effect only applies to players who are sleeping. + #Allowed Values: NEVER, ALWAYS, SLEEPING + potionEffect = "NEVER" + #When applied, this effect progresses player hunger effects to match the rate of the current time-speed. + #This results in faster healing when food level is full, and faster harm when food level is too low. + #This effect does not apply if time speed is 1.0 or less. + #When set to ALWAYS, this effect applies to all players in the dimension, day or night. Not recommended on higher difficulty settings + #When set to SLEEPING, this effect only applies to players who are sleeping. + #Allowed Values: NEVER, ALWAYS, SLEEPING + hungerEffect = "NEVER" + #When applied, this effect progresses block entities like furnaces, hoppers, and spawners to match the rate of the current time-speed. + #WARNING: This time-effect has a significant impact on performance. + #This effect does not apply if time speed is 1.0 or less. + #When set to SLEEPING, this effect only applies when at least one player is sleeping in a dimension. + #Allowed Values: NEVER, ALWAYS, SLEEPING + blockEntityEffect = "NEVER" + +[sleep] + #Enables or disables the sleep feature of this mod. Enabling this setting will modify the vanilla sleep functionality + #and may conflict with other sleep mods. If disabled, all settings in the sleep section will not apply. + enableSleepFeature = true + ### THIS SETTING DEFINES THE SLEEP TIME-SPEED IN SINGLE-PLAYER GAMES ### + #The maximum speed at which time passes when all players are sleeping. + #A value of 110 is nearly equal to the time it takes to sleep in vanilla. + #Range: 0.0 ~ 24000.0 + sleepSpeedMax = 16.0 + #The minimum speed at which time passes when only 1 player is sleeping in a full server. + #Range: 0.0 ~ 24000.0 + sleepSpeedMin = 1.0 + #The speed at which time passes when all players are sleeping. + #Set to -1 to disable this feature (sleepSpeedMax will be used when all players are sleeping). + #Range: -1.0 ~ 24000.0 + sleepSpeedAll = -1.0 + #This parameter defines the curvature of the interpolation function that translates the sleeping player percentage into time-speed. + #The function used is a Normalized Tunable Sigmoid Function. + #A value of 0.5 represents a linear relationship. + #Smaller values bend the curve toward the X axis, while greater values bend it toward the Y axis. + #This graph may be used as a reference for tuning the curve: https://www.desmos.com/calculator/w8gntxzfow + #Credit to Dino Dini for the function: https://dinodini.wordpress.com/2010/04/05/normalized-tunable-sigmoid-functions/ + #Credit to SmoothSleep for the idea: https://www.spigotmc.org/resources/smoothsleep.32043/ + #Range: 0.0 ~ 1.0 + sleepSpeedCurve = 0.3 + #Set to 'true' for the weather to clear when players wake up in the morning as it does in vanilla. + #Set to 'false' to force weather to pass naturally. Adds realism when accelerateWeather is enabled. + #Note: This setting is ignored if game rule doWeatherCycle is false. + clearWeatherOnWake = true + #When true, players are allowed to sleep at all times of day in dimensions controlled by Better Days. + #Note: Other mods may override this ability. + allowDaySleep = false + #When true, a clock is displayed in the sleep interface. + displayBedClock = true + #The ratio of players in a dimension that must be sleeping to skip to morning. + #A value of 1 means all players must be sleeping, 0.5 means half the players must be sleeping, etc. + #A value of 0 effectively disables this feature. + #Range: 0.0 ~ 1.0 + ratioPlayersForSleep = 0.0 + + #This section defines settings for notification messages. + #All messages support Minecraft formatting codes (https://minecraft.wiki/w/Formatting_codes). + #All messages have variables that can be inserted using the following format: ${variableName} + #The type option controls where the message appears: + # SYSTEM: Appears as a message in the chat. (e.g., "Respawn point set") + # GAME_INFO: Game information that appears above the hotbar (e.g., "You may not rest now, the bed is too far away"). + #The target option controls to whom the message is sent: + # ALL: Sends the message to all players on the server. + # DIMENSION: Sends the message to all players in the current dimension. + # SLEEPING: Sends the message to all players in the current dimension who are sleeping. + [sleep.messages] + + #This message is sent after a sleep cycle has completed. + [sleep.messages.morning] + #Available variables: + #sleepingPlayers -> the number of players in the current dimension who were sleeping. + #totalPlayers -> the number of players in the current dimension (spectators are not counted). + #sleepingPercentage -> the percentage of players in the current dimension who were sleeping (does not include % symbol). + message = "§e§oGood Morning!" + #Sets where this message appears. + #Allowed Values: SYSTEM, GAME_INFO + type = "GAME_INFO" + #Sets to whom this message is sent. + #A target of 'SLEEPING' will send the message to all players who just woke up. + #Allowed Values: ALL, DIMENSION, SLEEPING + target = "DIMENSION" + + #This message is sent when a player enters their bed. + [sleep.messages.enterBed] + #Available variables: + #player -> the player who started sleeping. + #sleepingPlayers -> the number of players in the current dimension who are sleeping. + #totalPlayers -> the number of players in the current dimension (spectators are not counted). + #sleepingPercentage -> the percentage of players in the current dimension who are sleeping (does not include % symbol). + message = "${player} is now sleeping. [${sleepingPlayers}/${totalPlayers}]" + #Sets where this message appears. + #Allowed Values: SYSTEM, GAME_INFO + type = "GAME_INFO" + #Sets to whom this message is sent. + #Allowed Values: ALL, DIMENSION, SLEEPING + target = "DIMENSION" + + #This message is sent when a player leaves their bed (without being woken up naturally by morning). + [sleep.messages.leaveBed] + #Available variables: + #player -> the player who left their bed. + #sleepingPlayers -> the number of players in the current dimension who are sleeping. + #totalPlayers -> the number of players in the current dimension (spectators are not counted). + #sleepingPercentage -> the percentage of players in the current dimension who are sleeping (does not include % symbol). + message = "${player} has left their bed. [${sleepingPlayers}/${totalPlayers}]" + #Sets where this message appears. + #Allowed Values: SYSTEM, GAME_INFO + type = "GAME_INFO" + #Sets to whom this message is sent. + #Allowed Values: ALL, DIMENSION, SLEEPING + target = "DIMENSION" + diff --git a/configureddefaults/config/map_atlases-common.toml b/configureddefaults/config/map_atlases-common.toml index f1553e1..8eb9d12 100644 --- a/configureddefaults/config/map_atlases-common.toml +++ b/configureddefaults/config/map_atlases-common.toml @@ -23,7 +23,7 @@ #Marker id associated with the red pin button on the atlas screen. Set to empty string to disable pin_marked_id = "map_atlases:pin" #Shows light color on maps. Needs Moonlight lib - light_map = false + light_map = true #Show nearby mobs on minimap. Needs matching client config also set mob_radar = false #Adds a shear button to the atlas screen which allows you to cut maps