diff --git a/src/main/java/com/g2806/soulsteal/config/SoulStealConfig.java b/src/main/java/com/g2806/soulsteal/config/SoulStealConfig.java index e7393a6..37d8c81 100644 --- a/src/main/java/com/g2806/soulsteal/config/SoulStealConfig.java +++ b/src/main/java/com/g2806/soulsteal/config/SoulStealConfig.java @@ -5,23 +5,23 @@ import java.util.Map; /** * Main configuration tree for the mod's economy, bounty, tracker, and permission settings. */ -public record SoulStealConfig( - EconomyConfig economy, - BountyConfig bounty, - TrackerConfig tracker, - ContractConfig contracts, - ShopUiConfig shop, - HudConfig hud, - PermissionConfig permissions -) { +public record SoulStealConfig( + EconomyConfig economy, + BountyConfig bounty, + TrackerConfig tracker, + ContractConfig contracts, + ShopUiConfig shop, + HudConfig hud, + PermissionConfig permissions +) { public static SoulStealConfig fromMap(Map root) { Map economySection = YamlConfigHelper.section(root, "economy"); Map deathPenaltySection = YamlConfigHelper.section(economySection, "death_penalty"); Map transferSection = YamlConfigHelper.section(economySection, "transfer"); Map bountySection = YamlConfigHelper.section(root, "bounties"); - Map trackerSection = YamlConfigHelper.section(root, "tracker"); - Map contractsSection = YamlConfigHelper.section(root, "contracts"); - Map shopSection = YamlConfigHelper.section(root, "shop"); + Map trackerSection = YamlConfigHelper.section(root, "tracker"); + Map contractsSection = YamlConfigHelper.section(root, "contracts"); + Map shopSection = YamlConfigHelper.section(root, "shop"); Map hudSection = YamlConfigHelper.section(root, "hud"); Map scoreboardSection = YamlConfigHelper.section(hudSection, "scoreboard"); Map bossbarSection = YamlConfigHelper.section(hudSection, "bounty_bossbar"); @@ -64,21 +64,21 @@ public record SoulStealConfig( bountyConfig = bountyConfig.withMaxDurationSeconds(bountyConfig.minDurationSeconds()); } - TrackerConfig trackerConfig = new TrackerConfig( - YamlConfigHelper.bool(trackerSection, "enabled", true), - Math.max(30L, YamlConfigHelper.longValue(trackerSection, "duration_seconds", 900L)), - Math.max(1, YamlConfigHelper.intValue(trackerSection, "update_interval_ticks", 20)), - YamlConfigHelper.bool(trackerSection, "expire_if_target_offline", false) - ); - - ContractConfig contractConfig = new ContractConfig( - YamlConfigHelper.bool(contractsSection, "enabled", true), - YamlConfigHelper.bool(contractsSection, "auto_claim", true), - new ContractHudConfig( - YamlConfigHelper.bool(contractsSection, "hud_enabled", true), - YamlConfigHelper.string(contractsSection, "hud_title", "Active Contract") - ) - ); + TrackerConfig trackerConfig = new TrackerConfig( + YamlConfigHelper.bool(trackerSection, "enabled", true), + Math.max(30L, YamlConfigHelper.longValue(trackerSection, "duration_seconds", 900L)), + Math.max(1, YamlConfigHelper.intValue(trackerSection, "update_interval_ticks", 20)), + YamlConfigHelper.bool(trackerSection, "expire_if_target_offline", false) + ); + + ContractConfig contractConfig = new ContractConfig( + YamlConfigHelper.bool(contractsSection, "enabled", true), + YamlConfigHelper.bool(contractsSection, "auto_claim", true), + new ContractHudConfig( + YamlConfigHelper.bool(contractsSection, "hud_enabled", true), + YamlConfigHelper.string(contractsSection, "hud_title", "Active Contract") + ) + ); ShopUiConfig shopUiConfig = new ShopUiConfig( YamlConfigHelper.string(shopSection, "title", "Soul Shop"), @@ -117,80 +117,82 @@ public record SoulStealConfig( YamlConfigHelper.string(permissionsSection, "leaderboard_node", "soulsteal.leaderboard") ); - return new SoulStealConfig(economyConfig, bountyConfig, trackerConfig, contractConfig, shopUiConfig, hudConfig, permissionConfig); - } + return new SoulStealConfig(economyConfig, bountyConfig, trackerConfig, contractConfig, shopUiConfig, hudConfig, permissionConfig); + } public static String defaultYaml() { return """ - economy: - starting_souls: 0 - max_souls: 1000000 - kill_reward: 25 - death_penalty: - flat: 15 - percent: 0.10 - minimum: 5 - maximum: 100 - transfer: - enabled: true - minimum: 1 + economy: + starting_souls: 0 + max_souls: 1000000 + kill_reward: 25 + death_penalty: + flat: 15 + percent: 0.10 + minimum: 5 + maximum: 100 + transfer: + enabled: true + minimum: 1 - bounties: - enabled: true - min_value: 25 - max_value: 10000 - default_duration_seconds: 7200 - min_duration_seconds: 600 - max_duration_seconds: 86400 - survivor_reward_percent: 0.50 - placement_cooldown_seconds: 60 - max_active_per_target: 5 - max_active_per_placer: 3 + bounties: + enabled: true + min_value: 25 + max_value: 10000 + default_duration_seconds: 7200 + min_duration_seconds: 600 + max_duration_seconds: 86400 + survivor_reward_percent: 0.50 + placement_cooldown_seconds: 60 + max_active_per_target: 5 + max_active_per_placer: 3 - tracker: - enabled: true - duration_seconds: 900 - update_interval_ticks: 20 - expire_if_target_offline: false - - contracts: - enabled: true - auto_claim: true - hud_enabled: true - hud_title: "Active Contract" - - shop: - title: "Soul Shop" - rows: 3 - filler_item: "minecraft:black_stained_glass_pane" - default_purchase_cooldown_seconds: 0 - enable_custom_amount_selector: true - default_max_custom_amount: 64 + tracker: + enabled: true + duration_seconds: 900 + update_interval_ticks: 20 + expire_if_target_offline: false - hud: - scoreboard: - enabled: true - default_visible: false - title: "Soul HUD" - bounty_bossbar: - enabled: true - title: "Bounty on You" - leaderboard: - page_size: 10 + contracts: + enabled: true + auto_claim: true + hud_enabled: true + hud_title: "Active Contract" - permissions: - # soulsteal.admin grants every admin-only action below. - admin_node: "soulsteal.admin" - reload_node: "soulsteal.admin.reload" - shop_node: "soulsteal.shop" - bounty_node: "soulsteal.bounty" - balance_others_node: "soulsteal.admin.balance.others" - set_node: "soulsteal.admin.balance.set" - add_node: "soulsteal.admin.balance.add" - take_node: "soulsteal.admin.balance.take" - scoreboard_node: "soulsteal.scoreboard" - leaderboard_node: "soulsteal.leaderboard" - """; + shop: + title: "Soul Shop" + rows: 3 + filler_item: "minecraft:light_gray_stained_glass_pane" + default_purchase_cooldown_seconds: 0 + enable_custom_amount_selector: true + default_max_custom_amount: 64 + + hud: + scoreboard: + enabled: true + default_visible: false + title: "Soul HUD" + + bounty_bossbar: + enabled: true + title: "Bounty on You" + + leaderboard: + page_size: 10 + + permissions: + # soulsteal.admin grants every admin-only action below. + admin_node: "soulsteal.admin" + reload_node: "soulsteal.admin.reload" + shop_node: "soulsteal.shop" + bounty_node: "soulsteal.bounty" + balance_others_node: "soulsteal.admin.balance.others" + set_node: "soulsteal.admin.balance.set" + add_node: "soulsteal.admin.balance.add" + take_node: "soulsteal.admin.balance.take" + scoreboard_node: "soulsteal.scoreboard" + leaderboard_node: "soulsteal.leaderboard" + """; } private static double clampPercent(double value) { @@ -198,7 +200,7 @@ public record SoulStealConfig( } private static int clampRows(int rows) { - return Math.max(2, Math.min(6, rows)); + return Math.max(2, Math.min(6, rows)); } public record EconomyConfig(long startingSouls, long maxSouls, long killReward, DeathPenaltyConfig deathPenalty, TransferConfig transfer) { @@ -233,14 +235,14 @@ public record SoulStealConfig( } } - public record TrackerConfig(boolean enabled, long durationSeconds, int updateIntervalTicks, boolean expireIfTargetOffline) { - } - - public record ContractConfig(boolean enabled, boolean autoClaim, ContractHudConfig hud) { - } - - public record ContractHudConfig(boolean enabled, String title) { - } + public record TrackerConfig(boolean enabled, long durationSeconds, int updateIntervalTicks, boolean expireIfTargetOffline) { + } + + public record ContractConfig(boolean enabled, boolean autoClaim, ContractHudConfig hud) { + } + + public record ContractHudConfig(boolean enabled, String title) { + } public record ShopUiConfig( String title, @@ -277,4 +279,4 @@ public record SoulStealConfig( String leaderboardNode ) { } -} +}