Skip to content
Original file line number Diff line number Diff line change
@@ -0,0 +1,262 @@
package net.runelite.client.plugins.microbot.breakhandler.breakhandlerv2;

import net.runelite.client.config.*;
import net.runelite.client.plugins.microbot.util.world.RegionPreference;
import net.runelite.client.plugins.microbot.util.world.WorldSelectionMode;

@ConfigGroup(BreakHandlerV2Config.configGroup)
public interface BreakHandlerV2Config extends Config {
String configGroup = "break-handler-v2";

// ========== BREAK TIMING SECTION ==========
@ConfigSection(
name = "Break Timing",
description = "Configure break timing and duration",
position = 0
)
String breakTimingSettings = "breakTimingSettings";

@ConfigItem(
keyName = "minPlaytime",
name = "Min Playtime (minutes)",
description = "Minimum time to play before taking a break",
position = 0,
section = breakTimingSettings
)
@Range(min = 1, max = 600)
default int minPlaytime() {
return 45;
}

@ConfigItem(
keyName = "maxPlaytime",
name = "Max Playtime (minutes)",
description = "Maximum time to play before taking a break",
position = 1,
section = breakTimingSettings
)
@Range(min = 1, max = 600)
default int maxPlaytime() {
return 90;
}

@ConfigItem(
keyName = "minBreakDuration",
name = "Min Break Duration (minutes)",
description = "Minimum break duration",
position = 2,
section = breakTimingSettings
)
@Range(min = 1, max = 600)
default int minBreakDuration() {
return 5;
}

@ConfigItem(
keyName = "maxBreakDuration",
name = "Max Break Duration (minutes)",
description = "Maximum break duration",
position = 3,
section = breakTimingSettings
)
@Range(min = 1, max = 600)
default int maxBreakDuration() {
return 15;
}

// ========== BREAK BEHAVIOR SECTION ==========
@ConfigSection(
name = "Break Behavior",
description = "Configure how breaks work",
position = 1
)
String breakBehaviorOptions = "breakBehaviorOptions";

@ConfigItem(
keyName = "logoutOnBreak",
name = "Logout on Break",
description = "Logout when taking a break",
position = 0,
section = breakBehaviorOptions
)
default boolean logoutOnBreak() {
return true;
}

@ConfigItem(
keyName = "safetyCheck",
name = "Safety Check",
description = "Wait until not in combat/interaction before breaking (tries up to 12 times over ~60 seconds)",
position = 1,
section = breakBehaviorOptions
)
default boolean safetyCheck() {
return true;
}

// ========== LOGIN & WORLD SECTION ==========
@ConfigSection(
name = "Login & World Selection",
description = "Configure login and world selection behavior",
position = 2
)
String loginWorldSettings = "loginWorldSettings";

@ConfigItem(
keyName = "autoLogin",
name = "Auto Login",
description = "Automatically log back in after break using profile data",
position = 0,
section = loginWorldSettings
)
default boolean autoLogin() {
return true;
}

@ConfigItem(
keyName = "worldSelectionMode",
name = "World Selection Mode",
description = "How to select worlds when logging back in",
position = 1,
section = loginWorldSettings
)
default WorldSelectionMode worldSelectionMode() {
return WorldSelectionMode.CURRENT_PREFERRED_WORLD;
}

@ConfigItem(
keyName = "regionPreference",
name = "Region Preference",
description = "Preferred region for world selection",
position = 2,
section = loginWorldSettings
)
default RegionPreference regionPreference() {
return RegionPreference.ANY_REGION;
}

@ConfigItem(
keyName = "avoidEmptyWorlds",
name = "Avoid Empty Worlds",
description = "Avoid worlds with very few players",
position = 3,
section = loginWorldSettings
)
default boolean avoidEmptyWorlds() {
return true;
}

@ConfigItem(
keyName = "avoidOvercrowdedWorlds",
name = "Avoid Crowded Worlds",
description = "Avoid worlds with too many players",
position = 4,
section = loginWorldSettings
)
default boolean avoidOvercrowdedWorlds() {
return true;
}

// ========== PROFILE SETTINGS SECTION ==========
@ConfigSection(
name = "Profile Settings",
description = "Profile and account management",
position = 3
)
String profileSettings = "profileSettings";

@ConfigItem(
keyName = "useActiveProfile",
name = "Use Active Profile",
description = "Use the currently active profile for login credentials",
position = 0,
section = profileSettings
)
default boolean useActiveProfile() {
return true;
}

@ConfigItem(
keyName = "respectMemberStatus",
name = "Respect Member Status",
description = "Use profile's member status to select appropriate worlds",
position = 1,
section = profileSettings
)
default boolean respectMemberStatus() {
return true;
}

// ========== NOTIFICATIONS SECTION ==========
@ConfigSection(
name = "Notifications",
description = "Discord webhook and notification settings",
position = 4
)
String notificationSettings = "notificationSettings";

@ConfigItem(
keyName = "enableDiscordWebhook",
name = "Enable Discord Webhook",
description = "Send notifications via Discord webhook from profile",
position = 0,
section = notificationSettings
)
default boolean enableDiscordWebhook() {
return false;
}

@ConfigItem(
keyName = "notifyOnBreakStart",
name = "Notify on Break Start",
description = "Send notification when break starts",
position = 1,
section = notificationSettings
)
default boolean notifyOnBreakStart() {
return true;
}

@ConfigItem(
keyName = "notifyOnBreakEnd",
name = "Notify on Break End",
description = "Send notification when break ends",
position = 2,
section = notificationSettings
)
default boolean notifyOnBreakEnd() {
return true;
}

@ConfigItem(
keyName = "notifyOnLoginFail",
name = "Notify on Login Failure",
description = "Send notification when login fails",
position = 3,
section = notificationSettings
)
default boolean notifyOnLoginFail() {
return true;
}

// ========== OVERLAY SETTINGS ==========
@ConfigItem(
keyName = "hideOverlay",
name = "Hide Overlay",
description = "Hide the break handler overlay",
position = 0
)
default boolean hideOverlay() {
return false;
}

@ConfigItem(
keyName = "showDetailedInfo",
name = "Show Detailed Info",
description = "Show detailed information in overlay",
position = 1
)
default boolean showDetailedInfo() {
return true;
}
}
Loading