From c8c6b953834f9c43c841d6f7e9f497a05938c09e Mon Sep 17 00:00:00 2001 From: materus Date: Sat, 13 Sep 2025 22:31:53 +0200 Subject: [PATCH] Add Music Box --- config/soundattract-common.toml | 471 ++++++++++++++++++++++++++++++++ index.toml | 14 + mods/deltaboxlib.pw.toml | 13 + mods/musicbox.pw.toml | 13 + pack.toml | 2 +- 5 files changed, 512 insertions(+), 1 deletion(-) create mode 100644 config/soundattract-common.toml create mode 100644 mods/deltaboxlib.pw.toml create mode 100644 mods/musicbox.pw.toml diff --git a/config/soundattract-common.toml b/config/soundattract-common.toml new file mode 100644 index 0000000..911a5fb --- /dev/null +++ b/config/soundattract-common.toml @@ -0,0 +1,471 @@ + +#Internal schema version for config migrations. Do not change. +[internal] + #Range: > 0 + configSchemaVersion = 5 + +#Sound Attract Mod Configuration +[general] + #Enable debug logging for troubleshooting. + debugLogging = false + #Maximum number of sounds any single mob can track simultaneously. + #Range: 1 ~ 1000000 + maxSoundsTracked = 20 + #Switching threshold factor (0.0–1.0]. A mob will switch if newWeight > currentWeight × soundSwitchRatio. + #Example: 0.5 means a new sound beating 70% of the current weight will trigger a switch (more eager switching). + #Set closer to 1.0 for conservative switching; closer to 0.0 for very eager switching. + #Range: 0.0 ~ 1.0 + soundSwitchRatio = 0.5 + #A small weight bonus given to very new sounds to make mobs more likely to switch to them. + #This helps break ties and makes mobs seem more 'alert' to new threats. + #Set to 0.0 to disable. + #Range: 0.0 ~ 10.0 + soundNoveltyBonusWeight = 9.5 + #How long (in ticks) a sound is considered 'new' for the novelty bonus to apply. + #20 ticks = 1 second. + #Range: 1 ~ 200 + soundNoveltyTimeTicks = 100 + +#Mob grouping and squad behavior +[groups] + #Enables smarter behavior for mobs at the edge of their hearing range (e.g. pathing closer to investigate further) + edgeMobSmartBehavior = true + #How long a sound event remains 'interesting' to a mob, in ticks (20 ticks = 1 second). + #Range: 20 ~ 1000000 + soundLifetimeTicks = 1200 + #How close a mob needs to get to a sound source to consider it 'reached'. + #Range: 1.0 ~ 100.0 + arrivalDistance = 6.0 + #Base speed multiplier for mobs moving towards a sound. + #Range: 0.1 ~ 3.0 + mobMoveSpeed = 1.0 + #Maximum number of mobs allowed in a group for group AI behavior. Default: 64 + #Range: 1 ~ 128 + maxGroupSize = 64 + #Radius (in blocks) used to group mobs under a leader for group AI behavior. Default: 64.0 + #Range: 1.0 ~ 128.0 + leaderGroupRadius = 64.0 + #Maximum distance (in blocks) for mobs to consider themselves part of a group for group behaviors. Used in AI such as FollowLeaderGoal. + #Range: 1.0 ~ 256.0 + groupDistance = 128.0 + #Multiplier for spacing between mob leaders in a group. Default: 1.0 + #Range: 0.1 ~ 10.0 + leaderSpacingMultiplier = 1.0 + #Number of edge sectors for group detection (AI). Default: 4 + #Range: 1 ~ 64 + numEdgeSectors = 4 + #Interval (in ticks) between group AI updates. Default: 200 + #Range: 1 ~ 20000 + groupUpdateInterval = 200 + #Maximum number of group leaders tracked for AI grouping. Default: 16 + #Range: 1 ~ 64 + maxLeaders = 16 + #Maximum number of edge mobs to select per angular sector. Default: 4 + #Range: 1 ~ 64 + edgeMobsPerSector = 1 + #Sprint speed multiplier used when followers rally/advance during RAID and when edge mobs return to the leader. + #Range: 1.0 ~ 5.0 + sprintMultiplier = 1.1 + #Distance (in blocks) within which an edge mob considers itself 'returned' to its leader. + #Range: 0.5 ~ 16.0 + leaderReturnArrivalDistance = 2.0 + #Countdown duration (in ticks) before a RAID advances to the target. 20 ticks = 1 second. + #Range: 20 ~ 72000 + raidCountdownTicks = 100 + +#Performance-tuning options. Adjust these to balance responsiveness and server load. +[performance] + #Delay in ticks before the first mob group computation is run after server startup. + #This helps prevent lag on world load by giving the server time to stabilize. + #20 ticks = 1 second. Default: 50 (2.5 seconds) + #Range: 0 ~ 72000 + initialGroupComputationDelay = 50 + #Number of background worker threads used for off-thread computations (e.g., group building). + #Increase for large servers; decrease if you observe contention. + #Range: 1 ~ 64 + workerThreads = 2 + #Soft per-task time budget in milliseconds for worker computations before yielding. + #Higher values allow more work per batch but can increase latency to apply results. + #Range: 1 ~ 1000 + workerTaskBudgetMs = 10 + #Minimum time in ticks between mob scans for new sounds. Higher values can improve performance but reduce responsiveness. + #Range: 1 ~ 1000000 + scanCooldownTicks = 25 + #How many ticks to add to the base scan cooldown for each active mob. + #This directly controls how much the cooldown increases with more mobs. + #A higher value means more cooldown per mob, slowing down scans more aggressively. + #Example: 0.25 means 100 mobs will add (100 * 0.15) = 15 ticks to the base cooldown. + #Range: 0.0 ~ 10.0 + cooldownTicksPerMob = 0.15 + #TPS below which scanCooldownTicks is dynamically increased to save performance. Set to 0 to disable. + #Range: 0.0 ~ 20.0 + minTpsForScanCooldown = 15.0 + #TPS above which scanCooldownTicks is dynamically decreased (down to its minimum defined value). Set to 21 to disable. + #Range: 0.0 ~ 21.0 + maxTpsForScanCooldown = 19.0 + #Cooldown (in ticks) per mob between async sound scoring submissions when candidates/target are unchanged. + #Range: 0 ~ 10000 + soundScoringSubmitCooldownTicks = 1 + #Time-to-live (in ticks) for cached async sound scoring results before considered stale. + #Range: 1 ~ 10000 + asyncResultTtlTicks = 10 + #Enable caching for raycast results to improve performance. Disable if experiencing issues with sound obstruction detection. + enableRaycastCache = true + #Time-to-live (in ticks) for raycast cache entries before they are considered expired. + #Range: 1 ~ 1000000 + raycastCacheTtlTicks = 200 + #Maximum number of entries stored in the raycast cache. Oldest entries are evicted when exceeded. + #Range: 100 ~ 1000000 + raycastCacheMaxEntries = 5000 + +["Enchanced AI Integration"] + #Enable mobs running AttractionGoal to break blocks to reach their destination when stuck. Requires EnhancedAI to be installed for block blacklists/rules. + enableBlockBreaking = false + #Multiplier for the time a mob takes to break a block. E.g., 2.0 means it takes twice as long. Uses EnhancedAI's config value if installed and this is set to -1. + #Range: -1.0 ~ 100.0 + blockBreakingTimeMultiplier = 1.5 + #If true, mobs will only attempt to break blocks if they are holding a tool (e.g. pickaxe) in their offhand. + blockBreakingToolOnly = false + #If true, mobs will only break blocks if their tool is the 'proper' tool for that block (e.g., pickaxe for stone). + blockBreakingProperToolOnly = false + +[Mobs] + #List of mobs that will be attracted to sounds. Example: ['minecraft:zombie', 'minecraft:skeleton']. + attractedEntities = ["minecraft:cave_spider", "minecraft:creeper", "minecraft:drowned", "minecraft:endermite", "minecraft:evoker", "minecraft:guardian", "minecraft:hoglin", "minecraft:husk", "minecraft:magma_cube", "minecraft:phantom", "minecraft:piglin", "minecraft:piglin_brute", "minecraft:pillager", "minecraft:ravager", "minecraft:shulker", "minecraft:silverfish", "minecraft:skeleton", "minecraft:slime", "minecraft:spider", "minecraft:stray", "minecraft:vex", "minecraft:vindicator", "minecraft:witch", "minecraft:wither_skeleton", "minecraft:zoglin", "minecraft:zombie", "minecraft:zombie_villager", "scguns:cog_knight", "scguns:cog_minion", "scguns:blunderer", "scguns:hive", "scguns:dissident", "scguns:hornlin", "scguns:redcoat", "scguns:cog_knight", "scguns:sky_carrier", "scguns:supply_scamp", "scguns:swarm", "scguns:zombified_hornlin", "spore:braiomil", "spore:braurei", "spore:brot", "spore:brute", "spore:busser", "spore:inf_construct", "spore:delusioner", "spore:gastgaber", "spore:gazenbreacher", "spore:griefer", "spore:hevoker", "spore:hidenburg", "spore:howitzer", "spore:howler", "spore:hvindicator", "spore:illusion", "spore:inf_drownded", "spore:inf_evoker", "spore:inf_hazmat", "spore:husk", "spore:inf_pillager", "spore:inf_player", "spore:inf_villager", "spore:inf_vindicator", "spore:inf_wanderer", "spore:inf_witch", "spore:inf_human", "spore:inquisitor", "spore:jagd", "spore:knight", "spore:lacerator", "spore:leaper", "spore:mound", "spore:nuclea", "spore:ogre", "spore:plagued", "spore:proto", "spore:reconstructor", "spore:scamper", "spore:scavenger", "spore:scent", "spore:sieger", "spore:specter", "spore:spitter", "spore:stalker", "spore:thorn", "spore:umarmed", "spore:usurper", "spore:verva", "spore:vigil", "spore:volatile", "spore:wendigo", "sculkhorde:sculk_zombie", "sculkhorde:sculk_witch", "sculkhorde:sculk_vindicator", "sculkhorde:sculk_vex", "sculkhorde:sculk_squid", "sculkhorde:sculk_spore_spewer", "sculkhorde:sculk_spitter", "sculkhorde:sculk_soul_reaper", "sculkhorde:sculk_sheep", "sculkhorde:sculk_salmon", "sculkhorde:sculk_ravager", "sculkhorde:sculk_pufferfish", "sculkhorde:sculk_phantom", "sculkhorde:sculk_mite_aggressor", "sculkhorde:sculk_mite", "sculkhorde:sculk_metamorphosis_pod", "sculkhorde:sculk_hatcher", "sculkhorde:sculk_guardian", "sculkhorde:sculk_ghast", "sculkhorde:sculk_enderman", "sculkhorde:sculk_creeper", "sculkhorde:sculk_broodling", "sculkhorde:sculk_brood_hatcher", "sculkhorde:sculk_bee_infector", "sculkhorde:sculk_bee_harvester", "sculkhorde:golem_of_wrath"] + #A list of entity resource IDs to PREVENT from receiving the attraction AI goals. + #This acts as a blacklist. Mobs on this list will never be attracted to sounds, regardless of other settings. + #Format: ['minecraft:pig', 'modid:some_other_mob'] + mobBlacklist = ["minecraft:pig"] + +["Sounds White List"] + #If not empty, only sound event IDs in this list will be considered by mobs. + soundIdWhitelist = ["minecraft:item.crossbow.shoot", "minecraft:item.crossbow.loading_start", "minecraft:item.crossbow.loading_middle", "minecraft:item.crossbow.loading_end", "minecraft:item.crossbow.quick_charge_1", "minecraft:item.crossbow.quick_charge_2", "minecraft:item.crossbow.quick_charge_3", "minecraft:entity.arrow.shoot", "minecraft:item.shield.block", "minecraft:block.lever.click", "minecraft:block.wooden_trapdoor.open", "minecraft:block.wooden_trapdoor.close", "minecraft:block.bamboo_wood_trapdoor.open", "minecraft:block.bamboo_wood_trapdoor.close", "minecraft:block.cherry_wood_trapdoor.open", "minecraft:block.cherry_wood_trapdoor.close", "minecraft:block.iron_trapdoor.open", "minecraft:block.iron_trapdoor.close", "minecraft:block.wooden_door.open", "minecraft:block.wooden_door.close", "minecraft:block.bamboo_wood_door.open", "minecraft:block.bamboo_wood_door.close", "minecraft:block.cherry_wood_door.open", "minecraft:block.cherry_wood_door.close", "minecraft:block.iron_door.open", "minecraft:block.iron_door.close", "minecraft:block.fence_gate.open", "minecraft:block.fence_gate.close", "minecraft:block.piston.extend", "minecraft:block.piston.contract", "minecraft:block.dispenser.dispense", "minecraft:block.dispenser.launch", "minecraft:block.anvil.land", "minecraft:block.anvil.use", "minecraft:block.anvil.destroy", "minecraft:block.sand.fall", "minecraft:block.gravel.fall", "minecraft:block.grass.break", "minecraft:block.scaffolding.break", "tacz:target_block_hit", "minecraft:entity.boat.paddle_water", "minecraft:ambient.underwater.enter", "minecraft:ambient.underwater.exit", "minecraft:block.chest.open", "minecraft:block.chest.close", "minecraft:block.barrel.open", "minecraft:block.barrel.close", "minecraft:block.ender_chest.open", "minecraft:block.ender_chest.close", "minecraft:block.shulker_box.open", "minecraft:block.shulker_box.close", "minecraft:block.bell.use", "minecraft:block.bell.resonate", "minecraft:block.furnace.fire_crackle", "minecraft:entity.generic.explode", "minecraft:entity.firework_rocket.launch", "minecraft:entity.firework_rocket.blast", "minecraft:entity.firework_rocket.large_blast", "minecraft:entity.player.hurt", "parcool:grabbing", "parcool:wallrun_and_running", "parcool:jumping", "parcool:sliding_1", "parcool:sliding_2", "parcool:sliding_3", "parcool:roll_and_dodge", "parcool:landing", "minecraft:random/anvil_land", "entity/leashknot/place1", "minecraft:entity.player.sprint", "minecraft:entity.player.jump", "minecraft:entity.player.sneak", "tacz:gun", "soundattract:voice_chat", "musketmod:musket_fire", "musketmod:blunderbuss_fire", "musketmod:pistol_fire", "cgm:item.shotgun.fire", "cgm:item.shotgun.silenced_fire", "cgm:item.shotgun.enchanted_fire", "cgm:item.shotgun.cock", "cgm:item.rifle.fire", "cgm:item.rifle.silenced_fire", "cgm:item.rifle.enchanted_fire", "cgm:item.rifle.cock", "cgm:item.pistol.fire", "cgm:item.pistol.silenced_fire", "cgm:item.pistol.enchanted_fire", "cgm:item.pistol.reload", "cgm:item.pistol.cock", "cgm:item.assault_rifle.fire", "cgm:item.assault_rifle.silenced_fire", "cgm:item.assault_rifle.enchanted_fire", "cgm:item.assault_rifle.cock", "cgm:item.grenade_launcher.fire", "cgm:item.bazooka.fire", "cgm:item.mini_gun.fire", "cgm:item.mini_gun.enchanted_fire", "cgm:item.machine_pistol.fire", "cgm:item.machine_pistol.silenced_fire", "cgm:item.machine_pistol.enchanted_fire", "cgm:item.heavy_rifle.fire", "cgm:item.heavy_rifle.silenced_fire", "cgm:item.heavy_rifle.enchanted_fire", "cgm:item.heavy_rifle.cock", "cgm:item.grenade.pin", "cgm:entity.stun_grenade.explosion", "cgm:entity.stun_grenade.ring", "scguns:item.makeshift_rifle.cock", "scguns:item.pistol.cock", "scguns:item.flamethrower.reload", "scguns:item.gauss.reload", "scguns:item.pistol.reload", "scguns:item.airgun.fire", "scguns:item.beam.fire", "scguns:item.blackpowder.fire", "scguns:item.boomstick.fire", "scguns:item.brass_pistol.fire", "scguns:item.brass_revolver.fire", "scguns:item.brass_shotgun.fire", "scguns:item.bruiser.fire", "scguns:item.combat_shotgun.fire", "scguns:item.cowboy.fire", "scguns:item.flamethrower.fire_2", "scguns:item.gauss.fire", "scguns:item.greaser_smg.fire", "scguns:item.gyrojet.fire", "scguns:item.heavy_rifle.fire", "scguns:item.heavier_rifle.fire", "scguns:item.iron_pistol.fire", "scguns:item.iron_rifle.fire", "scguns:item.makeshift_rifle.fire", "scguns:item.plasma.fire", "scguns:item.raygun.fire", "scguns:item.rocket.fire", "scguns:item.rocket_rifle.fire", "scguns:item.rusty_gnat.fire", "scguns:item.scrapper.fire", "scguns:item.sculk.fire", "scguns:item.shock.fire", "scguns:item.shulker.fire", "scguns:item.scorched_sniper.fire", "scguns:item.scorched_rifle.fire", "scguns:item.shock.silenced_fire", "scguns:item.bruiser.silenced_fire", "scguns:item.makeshift_rifle.silenced_fire", "scguns:item.combat_shotgun.silenced_fire", "scguns:item.rusty_gnat.silenced_fire", "scguns:item.shock.fire", "scguns:item.scorched_sniper.fire", "scguns:item.scorched_rifle.fire", "scguns:item.bruiser.fire", "scguns:item.flamethrower.fire_2", "scguns:item.blackpowder.fire", "scguns:item.gyrojet.fire", "scguns:item.boomstick.fire", "scguns:item.brass_shotgun.fire", "scguns:item.brass_revolver.fire", "scguns:item.shulker.fire", "scguns:item.iron_rifle.fire", "scguns:item.combat_shotgun.fire", "scguns:item.beam.fire", "scguns:item.airgun.fire", "scguns:item.heavier_rifle.fire", "scguns:item.iron_pistol.fire", "scguns:item.gauss.fire", "scguns:item.heavy_rifle.fire", "scguns:item.greaser_smg.fire", "scguns:item.plasma.fire", "scguns:item.rusty_gnat.fire", "scguns:item.cowboy.fire", "scguns:item.scrapper.fire", "scguns:item.sculk.fire", "scguns:item.raygun.fire", "scguns:item.rocket_rifle.fire", "scguns:item.makeshift_rifle.cock", "scguns:item.pistol.cock", "scguns:item.flamethrower.reload", "scguns:item.gauss.reload", "scguns:item.pistol.reload", "scguns:item.airgun.fire", "scguns:item.beam.fire", "scguns:item.blackpowder.fire", "scguns:item.boomstick.fire", "scguns:item.brass_pistol.fire", "scguns:item.brass_revolver.fire", "scguns:item.brass_shotgun.fire", "scguns:item.bruiser.fire", "scguns:item.combat_shotgun.fire", "scguns:item.cowboy.fire", "scguns:item.flamethrower.fire_2", "scguns:item.gauss.fire", "scguns:item.greaser_smg.fire", "scguns:item.gyrojet.fire", "scguns:item.heavy_rifle.fire", "scguns:item.heavier_rifle.fire", "scguns:item.iron_pistol.fire", "scguns:item.iron_rifle.fire", "scguns:item.makeshift_rifle.fire", "scguns:item.plasma.fire", "scguns:item.raygun.fire", "scguns:item.rocket.fire", "scguns:item.rocket_rifle.fire", "scguns:item.rusty_gnat.fire", "scguns:item.scrapper.fire", "scguns:item.sculk.fire", "scguns:item.shock.fire", "scguns:item.shulker.fire", "scguns:item.scorched_sniper.fire", "scguns:item.scorched_rifle.fire", "scguns:item.shock.silenced_fire", "scguns:item.bruiser.silenced_fire", "scguns:item.makeshift_rifle.silenced_fire", "scguns:item.combat_shotgun.silenced_fire", "scguns:item.rusty_gnat.silenced_fire", "scguns:item.shock.fire", "scguns:item.scorched_sniper.fire", "scguns:item.scorched_rifle.fire", "scguns:item.bruiser.fire", "scguns:item.flamethrower.fire_2", "scguns:item.blackpowder.fire", "scguns:item.gyrojet.fire", "scguns:item.boomstick.fire", "scguns:item.brass_shotgun.fire", "scguns:item.brass_revolver.fire", "scguns:item.shulker.fire", "scguns:item.iron_rifle.fire", "scguns:item.combat_shotgun.fire", "scguns:item.beam.fire", "scguns:item.airgun.fire", "scguns:item.heavier_rifle.fire", "scguns:item.iron_pistol.fire", "scguns:item.gauss.fire", "scguns:item.heavy_rifle.fire", "scguns:item.greaser_smg.fire", "scguns:item.plasma.fire", "scguns:item.rusty_gnat.fire", "scguns:item.cowboy.fire", "scguns:item.scrapper.fire", "scguns:item.sculk.fire", "scguns:item.raygun.fire", "scguns:item.rocket_rifle.fire", "superbwarfare:taser_fire_1p", "superbwarfare:taser_fire_3p", "superbwarfare:taser_reload_empty", "superbwarfare:trachelium_fire_1p", "superbwarfare:trachelium_fire_3p", "superbwarfare:trachelium_far", "superbwarfare:trachelium_veryfar", "superbwarfare:trachelium_fire_1p_s", "superbwarfare:trachelium_fire_3p_s", "superbwarfare:trachelium_far_s", "superbwarfare:trachelium_reload_empty", "superbwarfare:trachelium_bolt", "superbwarfare:hunting_rifle_fire_1p", "superbwarfare:hunting_rifle_fire_3p", "superbwarfare:hunting_rifle_far", "superbwarfare:hunting_rifle_veryfar", "superbwarfare:hunting_rifle_reload_empty", "superbwarfare:m_79_fire_1p", "superbwarfare:m_79_fire_3p", "superbwarfare:m_79_far", "superbwarfare:m_79_veryfar", "superbwarfare:m_79_reload_empty", "superbwarfare:sks_fire_1p", "superbwarfare:sks_fire_3p", "superbwarfare:sks_reload_normal", "superbwarfare:sks_reload_empty", "superbwarfare:sks_far", "superbwarfare:sks_veryfar", "superbwarfare:homemade_shotgun_fire_1p", "superbwarfare:homemade_shotgun_fire_3p", "superbwarfare:homemade_shotgun_far", "superbwarfare:homemade_shotgun_veryfar", "superbwarfare:homemade_shotgun_reload_normal", "superbwarfare:homemade_shotgun_reload_empty", "superbwarfare:ak_47_fire_1p", "superbwarfare:ak_47_fire_1p_s", "superbwarfare:ak_47_fire_3p", "superbwarfare:ak_47_fire_3p_s", "superbwarfare:ak_47_far", "superbwarfare:ak_47_veryfar", "superbwarfare:ak_47_reload_normal", "superbwarfare:ak_47_reload_empty", "superbwarfare:devotion_fire_1p", "superbwarfare:devotion_fire_3p", "superbwarfare:devotion_far", "superbwarfare:devotion_veryfar", "superbwarfare:devotion_reload_normal", "superbwarfare:devotion_reload_empty", "superbwarfare:rpg_fire_1p", "superbwarfare:rpg_fire_3p", "superbwarfare:rpg_far", "superbwarfare:rpg_veryfar", "superbwarfare:rpg_reload_empty", "superbwarfare:m_4_fire_1p", "superbwarfare:m_4_fire_1p_s", "superbwarfare:m_4_fire_3p", "superbwarfare:m_4_fire_3p_s", "superbwarfare:m_4_far", "superbwarfare:m_4_veryfar", "superbwarfare:m_4_reload_normal", "superbwarfare:m_4_reload_empty", "superbwarfare:aa_12_fire_1p", "superbwarfare:aa_12_fire_3p", "superbwarfare:aa_12_far", "superbwarfare:aa_12_veryfar", "superbwarfare:aa_12_reload_normal", "superbwarfare:aa_12_reload_empty", "superbwarfare:bocek_zoom_fire_1p", "superbwarfare:bocek_zoom_fire_3p", "superbwarfare:bocek_shatter_cap_fire_1p", "superbwarfare:bocek_shatter_cap_fire_3p", "superbwarfare:bocek_pull_1p", "superbwarfare:bocek_pull_3p", "superbwarfare:hk_416_fire_1p", "superbwarfare:hk_416_fire_1p_s", "superbwarfare:hk_416_fire_3p", "superbwarfare:hk_416_fire_3p_s", "superbwarfare:hk_416_far", "superbwarfare:hk_416_veryfar", "superbwarfare:hk_416_reload_normal", "superbwarfare:hk_416_reload_empty", "superbwarfare:rpk_fire_1p", "superbwarfare:rpk_fire_3p", "superbwarfare:rpk_fire_1p_s", "superbwarfare:rpk_fire_3p_s", "superbwarfare:rpk_far", "superbwarfare:rpk_veryfar", "superbwarfare:rpk_reload_normal", "superbwarfare:rpk_reload_empty", "superbwarfare:ntw_20_fire_1p", "superbwarfare:ntw_20_fire_3p", "superbwarfare:ntw_20_far", "superbwarfare:ntw_20_veryfar", "superbwarfare:ntw_20_reload_normal", "superbwarfare:ntw_20_reload_empty", "superbwarfare:ntw_20_bolt", "superbwarfare:vector_fire_1p", "superbwarfare:vector_fire_3p", "superbwarfare:vector_far", "superbwarfare:vector_veryfar", "superbwarfare:vector_fire_1p_s", "superbwarfare:vector_fire_3p_s", "superbwarfare:vector_far_s", "superbwarfare:vector_reload_normal", "superbwarfare:vector_reload_empty", "superbwarfare:minigun_fire_1p", "superbwarfare:minigun_fire_3p", "superbwarfare:minigun_far", "superbwarfare:minigun_veryfar", "superbwarfare:minigun_rot", "superbwarfare:minigun_overheat", "superbwarfare:mk_14_fire_1p", "superbwarfare:mk_14_fire_3p", "superbwarfare:mk_14_far", "superbwarfare:mk_14_veryfar", "superbwarfare:mk_14_fire_1p_s", "superbwarfare:mk_14_fire_3p_s", "superbwarfare:mk_14_far_s", "superbwarfare:mk_14_reload_normal", "superbwarfare:mk_14_reload_empty", "superbwarfare:sentinel_fire_1p", "superbwarfare:sentinel_fire_3p", "superbwarfare:sentinel_charge_fire_1p", "superbwarfare:sentinel_charge_fire_3p", "superbwarfare:sentinel_far", "superbwarfare:sentinel_veryfar", "superbwarfare:sentinel_charge_far", "superbwarfare:sentinel_charge_veryfar", "superbwarfare:sentinel_reload_normal", "superbwarfare:sentinel_reload_empty", "superbwarfare:sentinel_charge", "superbwarfare:sentinel_bolt", "superbwarfare:m_60_fire_1p", "superbwarfare:m_60_fire_3p", "superbwarfare:m_60_far", "superbwarfare:m_60_veryfar", "superbwarfare:m_60_reload_normal", "superbwarfare:m_60_reload_empty", "superbwarfare:svd_fire_1p", "superbwarfare:svd_fire_3p", "superbwarfare:svd_far", "superbwarfare:svd_veryfar", "superbwarfare:svd_fire_1p_s", "superbwarfare:svd_fire_3p_s", "superbwarfare:svd_far_s", "superbwarfare:svd_reload_normal", "superbwarfare:svd_reload_empty", "superbwarfare:m_98b_fire_1p", "superbwarfare:m_98b_fire_3p", "superbwarfare:m_98b_fire_1p_s", "superbwarfare:m_98b_fire_3p_s", "superbwarfare:m_98b_far", "superbwarfare:m_98b_veryfar", "superbwarfare:m_98b_reload_normal", "superbwarfare:m_98b_reload_empty", "superbwarfare:m_98b_bolt", "superbwarfare:marlin_fire_1p", "superbwarfare:marlin_fire_3p", "superbwarfare:marlin_far", "superbwarfare:marlin_veryfar", "superbwarfare:marlin_loop", "superbwarfare:marlin_prepare", "superbwarfare:marlin_end", "superbwarfare:marlin_bolt", "superbwarfare:m_870_fire_1p", "superbwarfare:m_870_fire_3p", "superbwarfare:m_870_far", "superbwarfare:m_870_veryfar", "superbwarfare:m_870_prepare_load", "superbwarfare:m_870_loop", "superbwarfare:m_870_bolt", "superbwarfare:glock_17_fire_1p", "superbwarfare:glock_17_fire_3p", "superbwarfare:glock_17_far", "superbwarfare:glock_17_veryfar", "superbwarfare:glock_17_reload_normal", "superbwarfare:glock_17_reload_empty", "superbwarfare:mp_443_fire_1p", "superbwarfare:mp_443_fire_3p", "superbwarfare:m_1911_fire_1p", "superbwarfare:m_1911_fire_3p", "superbwarfare:m_1911_far", "superbwarfare:m_1911_veryfar", "superbwarfare:qbz_95_fire_1p", "superbwarfare:qbz_95_fire_1p_s", "superbwarfare:qbz_95_fire_3p", "superbwarfare:qbz_95_fire_3p_s", "superbwarfare:qbz_95_far", "superbwarfare:qbz_95_veryfar", "superbwarfare:qbz_95_reload_normal", "superbwarfare:qbz_95_reload_empty", "superbwarfare:k_98_fire_1p", "superbwarfare:k_98_fire_3p", "superbwarfare:k_98_far", "superbwarfare:k_98_veryfar", "superbwarfare:k_98_reload_empty", "superbwarfare:k_98_bolt", "superbwarfare:k_98_loop", "superbwarfare:k_98_prepare", "superbwarfare:k_98_end", "superbwarfare:mosin_nagant_fire_1p", "superbwarfare:mosin_nagant_fire_3p", "superbwarfare:mosin_nagant_far", "superbwarfare:mosin_nagant_veryfar", "superbwarfare:mosin_nagant_bolt", "superbwarfare:mosin_nagant_loop", "superbwarfare:mosin_nagant_prepare", "superbwarfare:mosin_nagant_prepare_empty", "superbwarfare:mosin_nagant_end", "superbwarfare:javelin_fire_1p", "superbwarfare:javelin_fire_3p", "superbwarfare:javelin_far", "superbwarfare:javelin_reload_empty", "superbwarfare:javelin_lock", "superbwarfare:javelin_lockon", "superbwarfare:ak_12_fire_1p", "superbwarfare:ak_12_fire_3p", "superbwarfare:ak_12_fire_1p_s", "superbwarfare:ak_12_fire_3p_s", "superbwarfare:ak_12_far", "superbwarfare:ak_12_veryfar", "superbwarfare:ak_12_far_s", "superbwarfare:ak_12_veryfar_s", "superbwarfare:ak_12_reload_normal", "superbwarfare:ak_12_reload_empty", "superbwarfare:bullet_supply", "superbwarfare:shock", "superbwarfare:electric", "superbwarfare:triggerclick", "superbwarfare:hit", "superbwarfare:targetdown", "superbwarfare:indication", "superbwarfare:indication_vehicle", "superbwarfare:jump", "superbwarfare:doublejump", "superbwarfare:explosion_close", "superbwarfare:explosion_far", "superbwarfare:explosion_very_far", "superbwarfare:explosion_water", "superbwarfare:ouch", "superbwarfare:step", "superbwarfare:growl", "superbwarfare:idle", "superbwarfare:land", "superbwarfare:headshot", "superbwarfare:mortar_fire", "superbwarfare:mortar_distant", "superbwarfare:mortar_load", "superbwarfare:firerate", "superbwarfare:adjust_fov", "superbwarfare:mk_42_fire_1p", "superbwarfare:mk_42_far", "superbwarfare:mk_42_veryfar", "superbwarfare:mk_42_fire_3p", "superbwarfare:cannon_reload", "superbwarfare:cannon_zoom_in", "superbwarfare:cannon_zoom_out", "superbwarfare:drone_sound", "superbwarfare:grenade_throw", "superbwarfare:grenade_pull", "superbwarfare:heng", "superbwarfare:edit_mode", "superbwarfare:edit", "superbwarfare:shell_casing_normal", "superbwarfare:shell_casing_shotgun", "superbwarfare:shell_casing_50cal", "superbwarfare:huge_explosion_close", "superbwarfare:huge_explosion_far", "superbwarfare:huge_explosion_very_far", "superbwarfare:open", "superbwarfare:charge_rifle_fire_1p", "superbwarfare:charge_rifle_fire_3p", "superbwarfare:charge_rifle_fire_boom_1p", "superbwarfare:charge_rifle_fire_boom_3p", "superbwarfare:annihilator_fire_1p", "superbwarfare:annihilator_fire_3p", "superbwarfare:annihilator_far", "superbwarfare:annihilator_veryfar", "superbwarfare:annihilator_reload", "superbwarfare:boat_engine", "superbwarfare:vehicle_strike", "superbwarfare:m_2_hb_fire_1p", "superbwarfare:m_2_hb_fire_3p", "superbwarfare:m_2_hb_far", "superbwarfare:m_2_hb_veryfar", "superbwarfare:m_2_hb_reload_normal", "superbwarfare:m_2_hb_reload_empty", "superbwarfare:wheel_chair_engine", "superbwarfare:wheel_chair_jump", "superbwarfare:radar_search_start", "superbwarfare:radar_search_idle", "superbwarfare:radar_search_end", "superbwarfare:helicopter_engine_start", "superbwarfare:helicopter_engine", "superbwarfare:heli_cannon_fire_1p", "superbwarfare:heli_cannon_fire_3p", "superbwarfare:heli_cannon_far", "superbwarfare:heli_cannon_veryfar", "superbwarfare:small_rocket_fire_1p", "superbwarfare:small_rocket_fire_3p", "superbwarfare:into_cannon", "superbwarfare:into_missile", "superbwarfare:missile_reload", "superbwarfare:low_health", "superbwarfare:no_health", "superbwarfare:locking_warning", "superbwarfare:locked_warning", "superbwarfare:missile_warning", "superbwarfare:decoy_reload", "superbwarfare:decoy_fire", "superbwarfare:secondary_cataclysm_fire_1p", "superbwarfare:secondary_cataclysm_fire_3p", "superbwarfare:secondary_cataclysm_far", "superbwarfare:secondary_cataclysm_veryfar", "superbwarfare:secondary_cataclysm_loop", "superbwarfare:secondary_cataclysm_prepare_load", "superbwarfare:secondary_cataclysm_end", "superbwarfare:secondary_cataclysm_fire_1p_charge", "superbwarfare:secondary_cataclysm_fire_3p_charge", "superbwarfare:secondary_cataclysm_far_charge", "superbwarfare:secondary_cataclysm_veryfar_charge", "superbwarfare:lunge_mine_growl", "superbwarfare:lav_fire_1p", "superbwarfare:lav_fire_3p", "superbwarfare:lav_far", "superbwarfare:lav_veryfar", "superbwarfare:lav_engine", "superbwarfare:coax_fire_1p", "superbwarfare:bmp_fire_1p", "superbwarfare:bmp_fire_3p", "superbwarfare:bmp_engine", "superbwarfare:bmp_missile_fire_1p", "superbwarfare:bmp_missile_fire_3p", "superbwarfare:bmp_missile_reload", "superbwarfare:wheel_step", "superbwarfare:laser_tower_shoot", "superbwarfare:yx_100_reload", "superbwarfare:yx_100_fire_1p", "superbwarfare:yx_100_fire_3p", "superbwarfare:yx_100_far", "superbwarfare:yx_100_veryfar", "superbwarfare:yx_100_engine", "superbwarfare:turret_turn", "superbwarfare:c4_beep", "superbwarfare:c4_final", "superbwarfare:c4_throw", "superbwarfare:c4_detonator_click", "superbwarfare:prism_fire_1p", "superbwarfare:prism_fire_3p", "superbwarfare:prism_fire_1p_2", "superbwarfare:prism_fire_3p_2", "superbwarfare:prism_engine", "superbwarfare:insidious_fire_1p", "superbwarfare:insidious_fire_3p", "superbwarfare:insidious_far", "superbwarfare:insidious_veryfar", "superbwarfare:insidious_reload_empty", "superbwarfare:smoke_fire", "superbwarfare:hpj_11_fire_3p", "superbwarfare:track_move", "superbwarfare:rocket_fly", "superbwarfare:shell_fly", "superbwarfare:rocket_engine", "superbwarfare:vehicle_swim", "superbwarfare:a10_engine", "superbwarfare:a10_fire", "superbwarfare:bomb_release", "superbwarfare:missile_start", "superbwarfare:bomb_reload", "superbwarfare:jet_lock", "superbwarfare:jet_lockon", "superbwarfare:dps_generator_evolve", "superbwarfare:melee_hit", "superbwarfare:aurelia_sceptre_fire_1p", "superbwarfare:aurelia_sceptre_fire_3p", "superbwarfare:fly_loop", "superbwarfare:mp_5_fire_1p", "superbwarfare:mp_5_fire_3p", "superbwarfare:mp_5_far", "superbwarfare:mp_5_veryfar", "superbwarfare:mp_5_fire_1p_s", "superbwarfare:mp_5_fire_3p_s", "superbwarfare:mp_5_reload_normal", "superbwarfare:mp_5_reload_empty", "superbwarfare:steel_pipe_hit", "superbwarfare:steel_pipe_drop", "superbwarfare:qbz_191_fire_1p", "superbwarfare:qbz_191_fire_1p_s", "superbwarfare:qbz_191_fire_3p", "superbwarfare:qbz_191_fire_3p_s", "superbwarfare:qbz_191_far", "superbwarfare:qbz_191_veryfar", "superbwarfare:qbz_191_reload_normal", "superbwarfare:qbz_191_reload_empty", "superbwarfare:smoke_grenade_release", "superbwarfare:hand_wheel_rot", "superbwarfare:medium_rocket_fire", "superbwarfare:ty63_reload"] + #Minimum sound level (0.0-1.0) for player-emitted sounds to be considered. Higher values mean only louder sounds are tracked. + #Range: 0.0 ~ 1.0 + minSoundLevelForPlayer = 0.1 + #Minimum sound level (0.0-1.0) for mob-emitted sounds to be considered. + #Range: 0.0 ~ 1.0 + minSoundLevelForMob = 0.15 + +#Default Sound Properties +[sound_defaults] + #List of default sound properties. Format: 'sound_id;range;weight' + #Example: 'minecraft:item.crossbow.shoot;16.0;4.0' + soundDefaults = ["minecraft:item.crossbow.shoot;16;4", "minecraft:item.crossbow.loading_start;6;2", "minecraft:item.crossbow.loading_middle;6;2", "minecraft:item.crossbow.loading_end;6;2", "minecraft:item.crossbow.quick_charge_1;6;2", "minecraft:item.crossbow.quick_charge_2;6;2", "minecraft:item.crossbow.quick_charge_3;6;2", "minecraft:entity.arrow.shoot;14;4", "minecraft:item.shield.block;12;3", "minecraft:block.lever.click;5;3", "minecraft:block.wooden_trapdoor.open;8;3", "minecraft:block.wooden_trapdoor.close;8;3", "minecraft:block.bamboo_wood_trapdoor.open;10;3", "minecraft:block.bamboo_wood_trapdoor.close;10;3", "minecraft:block.cherry_wood_trapdoor.open;10;3", "minecraft:block.cherry_wood_trapdoor.close;10;3", "minecraft:block.iron_trapdoor.open;15;4", "minecraft:block.iron_trapdoor.close;15;4", "minecraft:block.wooden_door.open;12;4", "minecraft:block.wooden_door.close;12;4", "minecraft:block.bamboo_wood_door.open;15;4", "minecraft:block.bamboo_wood_door.close;15;4", "minecraft:block.cherry_wood_door.open;15;4", "minecraft:block.cherry_wood_door.close;15;4", "minecraft:block.iron_door.open;20;5", "minecraft:block.iron_door.close;20;5", "minecraft:block.fence_gate.open;10;3", "minecraft:block.fence_gate.close;10;3", "minecraft:block.piston.extend;20;4", "minecraft:block.piston.contract;20;4", "minecraft:block.dispenser.dispense;12;4", "minecraft:block.dispenser.launch;12;4", "minecraft:block.anvil.land;25;5", "minecraft:block.anvil.use;25;5", "minecraft:block.anvil.destroy;25;5", "minecraft:block.sand.fall;6;3", "minecraft:block.gravel.fall;6;3", "minecraft:block.grass.break;3;2", "minecraft:block.scaffolding.break;3;2", "tacz:target_block_hit;6;3", "minecraft:entity.boat.paddle_water;8;3", "minecraft:ambient.underwater.enter;4;2", "minecraft:ambient.underwater.exit;4;2", "minecraft:block.chest.open;5;2", "minecraft:block.chest.close;5;2", "minecraft:block.barrel.open;5;2", "minecraft:block.barrel.close;5;2", "minecraft:block.ender_chest.open;6;2", "minecraft:block.ender_chest.close;6;2", "minecraft:block.shulker_box.open;6;2", "minecraft:block.shulker_box.close;6;2", "minecraft:block.bell.use;30;5", "minecraft:block.bell.resonate;15;4", "minecraft:block.furnace.fire_crackle;8;3", "minecraft:entity.generic.explode;50;7", "minecraft:entity.firework_rocket.launch;10;3", "minecraft:entity.firework_rocket.blast;20;5", "minecraft:entity.firework_rocket.large_blast;30;6", "musketmod:musket_fire;155;8", "musketmod:blunderbuss_fire;154;7", "musketmod:pistol_fire;164;5", "cgm:item.shotgun.fire;156;15", "cgm:item.shotgun.silenced_fire;131;13", "cgm:item.shotgun.enchanted_fire;156;15", "cgm:item.shotgun.cock;90;6", "cgm:item.rifle.fire;162;16", "cgm:item.rifle.silenced_fire;137;13", "cgm:item.rifle.enchanted_fire;162;16", "cgm:item.rifle.cock;90;6", "cgm:item.pistol.fire;164;16", "cgm:item.pistol.silenced_fire;139;13", "cgm:item.pistol.enchanted_fire;164;16", "cgm:item.pistol.reload;85;7", "cgm:item.pistol.cock;90;6", "cgm:item.assault_rifle.fire;159;16", "cgm:item.assault_rifle.silenced_fire;134;13", "cgm:item.assault_rifle.enchanted_fire;159;16", "cgm:item.assault_rifle.cock;90;6", "cgm:item.grenade_launcher.fire;172;17", "cgm:item.bazooka.fire;184;17", "cgm:item.mini_gun.fire;180;17", "cgm:item.mini_gun.enchanted_fire;180;17", "cgm:item.machine_pistol.fire;160;16", "cgm:item.machine_pistol.silenced_fire;135;13", "cgm:item.machine_pistol.enchanted_fire;160;16", "cgm:item.heavy_rifle.fire;165;16", "cgm:item.heavy_rifle.silenced_fire;140;13", "cgm:item.heavy_rifle.enchanted_fire;165;16", "cgm:item.heavy_rifle.cock;90;6", "cgm:item.grenade.pin;72;6", "cgm:entity.stun_grenade.explosion;175;18", "cgm:entity.stun_grenade.ring;104;10", "scguns:item.makeshift_rifle.cock;10;1.0", "scguns:item.pistol.cock;5;0.5", "scguns:item.flamethrower.reload;10;1.0", "scguns:item.gauss.reload;25;2.5", "scguns:item.pistol.reload;10;1.0", "scguns:item.airgun.fire;80;8.0", "scguns:item.beam.fire;100;10.0", "scguns:item.blackpowder.fire;115;11.5", "scguns:item.boomstick.fire;120;12.0", "scguns:item.brass_pistol.fire;105;10.5", "scguns:item.brass_revolver.fire;110;11.0", "scguns:item.brass_shotgun.fire;110;11.0", "scguns:item.bruiser.fire;115;11.5", "scguns:item.combat_shotgun.fire;120;12.0", "scguns:item.cowboy.fire;110;11.0", "scguns:item.flamethrower.fire_2;95;9.5", "scguns:item.gauss.fire;130;13.0", "scguns:item.greaser_smg.fire;110;11.0", "scguns:item.gyrojet.fire;115;11.5", "scguns:item.heavy_rifle.fire;120;12.0", "scguns:item.heavier_rifle.fire;125;12.5", "scguns:item.iron_pistol.fire;110;11.0", "scguns:item.iron_rifle.fire;120;12.0", "scguns:item.makeshift_rifle.fire;110;11.0", "scguns:item.plasma.fire;115;11.5", "scguns:item.raygun.fire;110;11.0", "scguns:item.rocket.fire;140;14.0", "scguns:item.rocket_rifle.fire;135;13.5", "scguns:item.rusty_gnat.fire;105;10.5", "scguns:item.scrapper.fire;110;11.0", "scguns:item.sculk.fire;100;10.0", "scguns:item.shock.fire;95;9.5", "scguns:item.shulker.fire;105;10.5", "scguns:item.scorched_sniper.fire;130;13.0", "scguns:item.scorched_rifle.fire;125;12.5", "scguns:item.shock.silenced_fire;45;4.5", "scguns:item.bruiser.silenced_fire;55;5.5", "scguns:item.makeshift_rifle.silenced_fire;50;5.0", "scguns:item.combat_shotgun.silenced_fire;60;6.0", "scguns:item.rusty_gnat.silenced_fire;45;4.5", "scguns:item.shock.fire;155;15.5", "scguns:item.scorched_sniper.fire;190;19.0", "scguns:item.scorched_rifle.fire;185;18.5", "scguns:item.bruiser.fire;175;17.5", "scguns:item.flamethrower.fire_2;155;15.5", "scguns:item.blackpowder.fire;175;17.5", "scguns:item.gyrojet.fire;175;17.5", "scguns:item.boomstick.fire;180;18.0", "scguns:item.brass_shotgun.fire;170;17.0", "scguns:item.brass_revolver.fire;170;17.0", "scguns:item.shulker.fire;165;16.5", "scguns:item.iron_rifle.fire;180;18.0", "scguns:item.combat_shotgun.fire;180;18.0", "scguns:item.beam.fire;160;16.0", "scguns:item.airgun.fire;140;14.0", "scguns:item.heavier_rifle.fire;185;18.5", "scguns:item.iron_pistol.fire;170;17.0", "scguns:item.gauss.fire;190;19.0", "scguns:item.heavy_rifle.fire;180;18.0", "scguns:item.greaser_smg.fire;170;17.0", "scguns:item.plasma.fire;175;17.5", "scguns:item.rusty_gnat.fire;165;16.5", "scguns:item.cowboy.fire;170;17.0", "scguns:item.scrapper.fire;170;17.0", "scguns:item.sculk.fire;160;16.0", "scguns:item.raygun.fire;170;17.0", "scguns:item.rocket_rifle.fire;195;19.5", "scguns:item.makeshift_rifle.cock;10;1.0", "scguns:item.pistol.cock;5;0.5", "scguns:item.flamethrower.reload;10;1.0", "scguns:item.gauss.reload;25;2.5", "scguns:item.pistol.reload;10;1.0", "scguns:item.airgun.fire;80;8.0", "scguns:item.beam.fire;100;10.0", "scguns:item.blackpowder.fire;115;11.5", "scguns:item.boomstick.fire;120;12.0", "scguns:item.brass_pistol.fire;105;10.5", "scguns:item.brass_revolver.fire;110;11.0", "scguns:item.brass_shotgun.fire;110;11.0", "scguns:item.bruiser.fire;115;11.5", "scguns:item.combat_shotgun.fire;120;12.0", "scguns:item.cowboy.fire;110;11.0", "scguns:item.flamethrower.fire_2;95;9.5", "scguns:item.gauss.fire;130;13.0", "scguns:item.greaser_smg.fire;110;11.0", "scguns:item.gyrojet.fire;115;11.5", "scguns:item.heavy_rifle.fire;120;12.0", "scguns:item.heavier_rifle.fire;125;12.5", "scguns:item.iron_pistol.fire;110;11.0", "scguns:item.iron_rifle.fire;120;12.0", "scguns:item.makeshift_rifle.fire;110;11.0", "scguns:item.plasma.fire;115;11.5", "scguns:item.raygun.fire;110;11.0", "scguns:item.rocket.fire;140;14.0", "scguns:item.rocket_rifle.fire;135;13.5", "scguns:item.rusty_gnat.fire;105;10.5", "scguns:item.scrapper.fire;110;11.0", "scguns:item.sculk.fire;100;10.0", "scguns:item.shock.fire;95;9.5", "scguns:item.shulker.fire;105;10.5", "scguns:item.scorched_sniper.fire;130;13.0", "scguns:item.scorched_rifle.fire;125;12.5", "scguns:item.shock.silenced_fire;45;4.5", "scguns:item.bruiser.silenced_fire;55;5.5", "scguns:item.makeshift_rifle.silenced_fire;50;5.0", "scguns:item.combat_shotgun.silenced_fire;60;6.0", "scguns:item.rusty_gnat.silenced_fire;45;4.5", "scguns:item.shock.fire;155;15.5", "scguns:item.scorched_sniper.fire;190;19.0", "scguns:item.scorched_rifle.fire;185;18.5", "scguns:item.bruiser.fire;175;17.5", "scguns:item.flamethrower.fire_2;155;15.5", "scguns:item.blackpowder.fire;175;17.5", "scguns:item.gyrojet.fire;175;17.5", "scguns:item.boomstick.fire;180;18.0", "scguns:item.brass_shotgun.fire;170;17.0", "scguns:item.brass_revolver.fire;170;17.0", "scguns:item.shulker.fire;165;16.5", "scguns:item.iron_rifle.fire;180;18.0", "scguns:item.combat_shotgun.fire;180;18.0", "scguns:item.beam.fire;160;16.0", "scguns:item.airgun.fire;140;14.0", "scguns:item.heavier_rifle.fire;185;18.5", "scguns:item.iron_pistol.fire;170;17.0", "scguns:item.gauss.fire;190;19.0", "scguns:item.heavy_rifle.fire;180;18.0", "scguns:item.greaser_smg.fire;170;17.0", "scguns:item.plasma.fire;175;17.5", "scguns:item.rusty_gnat.fire;165;16.5", "scguns:item.cowboy.fire;170;17.0", "scguns:item.scrapper.fire;170;17.0", "scguns:item.sculk.fire;160;16.0", "scguns:item.raygun.fire;170;17.0", "scguns:item.rocket_rifle.fire;195;19.5", "superbwarfare:taser_fire_1p;150;65", "superbwarfare:taser_fire_3p;150;65", "superbwarfare:taser_reload_empty;30;25", "superbwarfare:trachelium_fire_1p;150;65", "superbwarfare:trachelium_fire_3p;150;65", "superbwarfare:trachelium_far;250;150", "superbwarfare:trachelium_veryfar;400;300", "superbwarfare:trachelium_fire_1p_s;150;65", "superbwarfare:trachelium_fire_3p_s;150;65", "superbwarfare:trachelium_far_s;250;150", "superbwarfare:trachelium_reload_empty;30;25", "superbwarfare:trachelium_bolt;30;10", "superbwarfare:hunting_rifle_fire_1p;150;65", "superbwarfare:hunting_rifle_fire_3p;150;65", "superbwarfare:hunting_rifle_far;250;150", "superbwarfare:hunting_rifle_veryfar;400;300", "superbwarfare:hunting_rifle_reload_empty;30;25", "superbwarfare:m_79_fire_1p;150;65", "superbwarfare:m_79_fire_3p;150;65", "superbwarfare:m_79_far;250;150", "superbwarfare:m_79_veryfar;400;300", "superbwarfare:m_79_reload_empty;30;25", "superbwarfare:sks_fire_1p;150;65", "superbwarfare:sks_fire_3p;150;65", "superbwarfare:sks_reload_normal;30;25", "superbwarfare:sks_reload_empty;30;25", "superbwarfare:sks_far;250;150", "superbwarfare:sks_veryfar;400;300", "superbwarfare:homemade_shotgun_fire_1p;150;65", "superbwarfare:homemade_shotgun_fire_3p;150;65", "superbwarfare:homemade_shotgun_far;250;150", "superbwarfare:homemade_shotgun_veryfar;400;300", "superbwarfare:homemade_shotgun_reload_normal;30;25", "superbwarfare:homemade_shotgun_reload_empty;30;25", "superbwarfare:ak_47_fire_1p;150;65", "superbwarfare:ak_47_fire_1p_s;150;65", "superbwarfare:ak_47_fire_3p;150;65", "superbwarfare:ak_47_fire_3p_s;150;65", "superbwarfare:ak_47_far;250;150", "superbwarfare:ak_47_veryfar;400;300", "superbwarfare:ak_47_reload_normal;30;25", "superbwarfare:ak_47_reload_empty;30;25", "superbwarfare:devotion_fire_1p;150;65", "superbwarfare:devotion_fire_3p;150;65", "superbwarfare:devotion_far;250;150", "superbwarfare:devotion_veryfar;400;300", "superbwarfare:devotion_reload_normal;30;25", "superbwarfare:devotion_reload_empty;30;25", "superbwarfare:rpg_fire_1p;150;65", "superbwarfare:rpg_fire_3p;150;65", "superbwarfare:rpg_far;250;150", "superbwarfare:rpg_veryfar;400;300", "superbwarfare:rpg_reload_empty;30;25", "superbwarfare:m_4_fire_1p;150;65", "superbwarfare:m_4_fire_1p_s;150;65", "superbwarfare:m_4_fire_3p;150;65", "superbwarfare:m_4_fire_3p_s;150;65", "superbwarfare:m_4_far;250;150", "superbwarfare:m_4_veryfar;400;300", "superbwarfare:m_4_reload_normal;30;25", "superbwarfare:m_4_reload_empty;30;25", "superbwarfare:aa_12_fire_1p;150;65", "superbwarfare:aa_12_fire_3p;150;65", "superbwarfare:aa_12_far;250;150", "superbwarfare:aa_12_veryfar;400;300", "superbwarfare:aa_12_reload_normal;30;25", "superbwarfare:aa_12_reload_empty;30;25", "superbwarfare:bocek_zoom_fire_1p;150;65", "superbwarfare:bocek_zoom_fire_3p;150;65", "superbwarfare:bocek_shatter_cap_fire_1p;150;65", "superbwarfare:bocek_shatter_cap_fire_3p;150;65", "superbwarfare:bocek_pull_1p;30;10", "superbwarfare:bocek_pull_3p;30;10", "superbwarfare:hk_416_fire_1p;150;65", "superbwarfare:hk_416_fire_1p_s;150;65", "superbwarfare:hk_416_fire_3p;150;65", "superbwarfare:hk_416_fire_3p_s;150;65", "superbwarfare:hk_416_far;250;150", "superbwarfare:hk_416_veryfar;400;300", "superbwarfare:hk_416_reload_normal;30;25", "superbwarfare:hk_416_reload_empty;30;25", "superbwarfare:rpk_fire_1p;150;65", "superbwarfare:rpk_fire_3p;150;65", "superbwarfare:rpk_fire_1p_s;150;65", "superbwarfare:rpk_fire_3p_s;150;65", "superbwarfare:rpk_far;250;150", "superbwarfare:rpk_veryfar;400;300", "superbwarfare:rpk_reload_normal;30;25", "superbwarfare:rpk_reload_empty;30;25", "superbwarfare:ntw_20_fire_1p;150;65", "superbwarfare:ntw_20_fire_3p;150;65", "superbwarfare:ntw_20_far;250;150", "superbwarfare:ntw_20_veryfar;400;300", "superbwarfare:ntw_20_reload_normal;30;25", "superbwarfare:ntw_20_reload_empty;30;25", "superbwarfare:ntw_20_bolt;30;10", "superbwarfare:vector_fire_1p;150;65", "superbwarfare:vector_fire_3p;150;65", "superbwarfare:vector_far;250;150", "superbwarfare:vector_veryfar;400;300", "superbwarfare:vector_fire_1p_s;150;65", "superbwarfare:vector_fire_3p_s;150;65", "superbwarfare:vector_far_s;250;150", "superbwarfare:vector_reload_normal;30;25", "superbwarfare:vector_reload_empty;30;25", "superbwarfare:minigun_fire_1p;150;65", "superbwarfare:minigun_fire_3p;150;65", "superbwarfare:minigun_far;250;150", "superbwarfare:minigun_veryfar;400;300", "superbwarfare:minigun_rot;30;10", "superbwarfare:minigun_overheat;30;10", "superbwarfare:mk_14_fire_1p;150;65", "superbwarfare:mk_14_fire_3p;150;65", "superbwarfare:mk_14_far;250;150", "superbwarfare:mk_14_veryfar;400;300", "superbwarfare:mk_14_fire_1p_s;150;65", "superbwarfare:mk_14_fire_3p_s;150;65", "superbwarfare:mk_14_far_s;250;150", "superbwarfare:mk_14_reload_normal;30;25", "superbwarfare:mk_14_reload_empty;30;25", "superbwarfare:sentinel_fire_1p;150;65", "superbwarfare:sentinel_fire_3p;150;65", "superbwarfare:sentinel_charge_fire_1p;150;65", "superbwarfare:sentinel_charge_fire_3p;150;65", "superbwarfare:sentinel_far;250;150", "superbwarfare:sentinel_veryfar;400;300", "superbwarfare:sentinel_charge_far;250;150", "superbwarfare:sentinel_charge_veryfar;400;300", "superbwarfare:sentinel_reload_normal;30;25", "superbwarfare:sentinel_reload_empty;30;25", "superbwarfare:sentinel_charge;30;10", "superbwarfare:sentinel_bolt;30;10", "superbwarfare:m_60_fire_1p;150;65", "superbwarfare:m_60_fire_3p;150;65", "superbwarfare:m_60_far;250;150", "superbwarfare:m_60_veryfar;400;300", "superbwarfare:m_60_reload_normal;30;25", "superbwarfare:m_60_reload_empty;30;25", "superbwarfare:svd_fire_1p;150;65", "superbwarfare:svd_fire_3p;150;65", "superbwarfare:svd_far;250;150", "superbwarfare:svd_veryfar;400;300", "superbwarfare:svd_fire_1p_s;150;65", "superbwarfare:svd_fire_3p_s;150;65", "superbwarfare:svd_far_s;250;150", "superbwarfare:svd_reload_normal;30;25", "superbwarfare:svd_reload_empty;30;25", "superbwarfare:m_98b_fire_1p;150;65", "superbwarfare:m_98b_fire_3p;150;65", "superbwarfare:m_98b_fire_1p_s;150;65", "superbwarfare:m_98b_fire_3p_s;150;65", "superbwarfare:m_98b_far;250;150", "superbwarfare:m_98b_veryfar;400;300", "superbwarfare:m_98b_reload_normal;30;25", "superbwarfare:m_98b_reload_empty;30;25", "superbwarfare:m_98b_bolt;30;10", "superbwarfare:marlin_fire_1p;150;65", "superbwarfare:marlin_fire_3p;150;65", "superbwarfare:marlin_far;250;150", "superbwarfare:marlin_veryfar;400;300", "superbwarfare:marlin_loop;30;10", "superbwarfare:marlin_prepare;30;10", "superbwarfare:marlin_end;30;10", "superbwarfare:marlin_bolt;30;10", "superbwarfare:m_870_fire_1p;150;65", "superbwarfare:m_870_fire_3p;150;65", "superbwarfare:m_870_far;250;150", "superbwarfare:m_870_veryfar;400;300", "superbwarfare:m_870_prepare_load;30;10", "superbwarfare:m_870_loop;30;10", "superbwarfare:m_870_bolt;30;10", "superbwarfare:glock_17_fire_1p;150;65", "superbwarfare:glock_17_fire_3p;150;65", "superbwarfare:glock_17_far;250;150", "superbwarfare:glock_17_veryfar;400;300", "superbwarfare:glock_17_reload_normal;30;25", "superbwarfare:glock_17_reload_empty;30;25", "superbwarfare:mp_443_fire_1p;150;65", "superbwarfare:mp_443_fire_3p;150;65", "superbwarfare:m_1911_fire_1p;150;65", "superbwarfare:m_1911_fire_3p;150;65", "superbwarfare:m_1911_far;250;150", "superbwarfare:m_1911_veryfar;400;300", "superbwarfare:qbz_95_fire_1p;150;65", "superbwarfare:qbz_95_fire_1p_s;150;65", "superbwarfare:qbz_95_fire_3p;150;65", "superbwarfare:qbz_95_fire_3p_s;150;65", "superbwarfare:qbz_95_far;250;150", "superbwarfare:qbz_95_veryfar;400;300", "superbwarfare:qbz_95_reload_normal;30;25", "superbwarfare:qbz_95_reload_empty;30;25", "superbwarfare:k_98_fire_1p;150;65", "superbwarfare:k_98_fire_3p;150;65", "superbwarfare:k_98_far;250;150", "superbwarfare:k_98_veryfar;400;300", "superbwarfare:k_98_reload_empty;30;25", "superbwarfare:k_98_bolt;30;10", "superbwarfare:k_98_loop;30;10", "superbwarfare:k_98_prepare;30;10", "superbwarfare:k_98_end;30;10", "superbwarfare:mosin_nagant_fire_1p;150;65", "superbwarfare:mosin_nagant_fire_3p;150;65", "superbwarfare:mosin_nagant_far;250;150", "superbwarfare:mosin_nagant_veryfar;400;300", "superbwarfare:mosin_nagant_bolt;30;10", "superbwarfare:mosin_nagant_loop;30;10", "superbwarfare:mosin_nagant_prepare;30;10", "superbwarfare:mosin_nagant_prepare_empty;10;14", "superbwarfare:mosin_nagant_end;30;10", "superbwarfare:javelin_fire_1p;150;65", "superbwarfare:javelin_fire_3p;150;65", "superbwarfare:javelin_far;250;150", "superbwarfare:javelin_reload_empty;30;25", "superbwarfare:javelin_lock;30;10", "superbwarfare:javelin_lockon;30;10", "superbwarfare:ak_12_fire_1p;150;65", "superbwarfare:ak_12_fire_3p;150;65", "superbwarfare:ak_12_fire_1p_s;150;65", "superbwarfare:ak_12_fire_3p_s;150;65", "superbwarfare:ak_12_far;250;150", "superbwarfare:ak_12_veryfar;400;300", "superbwarfare:ak_12_far_s;250;150", "superbwarfare:ak_12_veryfar_s;400;300", "superbwarfare:ak_12_reload_normal;30;25", "superbwarfare:ak_12_reload_empty;30;25", "superbwarfare:bullet_supply;30;10", "superbwarfare:shock;30;10", "superbwarfare:electric;30;10", "superbwarfare:triggerclick;30;10", "superbwarfare:hit;30;10", "superbwarfare:targetdown;30;10", "superbwarfare:indication;30;10", "superbwarfare:indication_vehicle;30;10", "superbwarfare:jump;30;10", "superbwarfare:doublejump;30;10", "superbwarfare:explosion_close;30;10", "superbwarfare:explosion_far;250;150", "superbwarfare:explosion_very_far;400;300", "superbwarfare:explosion_water;30;10", "superbwarfare:ouch;30;10", "superbwarfare:step;30;10", "superbwarfare:growl;30;10", "superbwarfare:idle;30;10", "superbwarfare:land;30;10", "superbwarfare:headshot;30;10", "superbwarfare:mortar_fire;150;65", "superbwarfare:mortar_distant;30;10", "superbwarfare:mortar_load;30;10", "superbwarfare:firerate;150;65", "superbwarfare:adjust_fov;30;10", "superbwarfare:mk_42_fire_1p;150;65", "superbwarfare:mk_42_far;250;150", "superbwarfare:mk_42_veryfar;400;300", "superbwarfare:mk_42_fire_3p;150;65", "superbwarfare:cannon_reload;30;25", "superbwarfare:cannon_zoom_in;30;10", "superbwarfare:cannon_zoom_out;30;10", "superbwarfare:drone_sound;30;10", "superbwarfare:grenade_throw;30;10", "superbwarfare:grenade_pull;30;10", "superbwarfare:heng;30;10", "superbwarfare:edit_mode;30;10", "superbwarfare:edit;30;10", "superbwarfare:shell_casing_normal;30;10", "superbwarfare:shell_casing_shotgun;30;10", "superbwarfare:shell_casing_50cal;30;10", "superbwarfare:huge_explosion_close;30;10", "superbwarfare:huge_explosion_far;250;150", "superbwarfare:huge_explosion_very_far;400;300", "superbwarfare:open;30;10", "superbwarfare:charge_rifle_fire_1p;150;65", "superbwarfare:charge_rifle_fire_3p;150;65", "superbwarfare:charge_rifle_fire_boom_1p;150;65", "superbwarfare:charge_rifle_fire_boom_3p;150;65", "superbwarfare:annihilator_fire_1p;150;65", "superbwarfare:annihilator_fire_3p;150;65", "superbwarfare:annihilator_far;250;150", "superbwarfare:annihilator_veryfar;400;300", "superbwarfare:annihilator_reload;30;25", "superbwarfare:boat_engine;30;10", "superbwarfare:vehicle_strike;30;10", "superbwarfare:m_2_hb_fire_1p;150;65", "superbwarfare:m_2_hb_fire_3p;150;65", "superbwarfare:m_2_hb_far;250;150", "superbwarfare:m_2_hb_veryfar;400;300", "superbwarfare:m_2_hb_reload_normal;30;25", "superbwarfare:m_2_hb_reload_empty;30;25", "superbwarfare:wheel_chair_engine;30;10", "superbwarfare:wheel_chair_jump;30;10", "superbwarfare:radar_search_start;30;10", "superbwarfare:radar_search_idle;30;10", "superbwarfare:radar_search_end;30;10", "superbwarfare:helicopter_engine_start;30;10", "superbwarfare:helicopter_engine;30;10", "superbwarfare:heli_cannon_fire_1p;150;65", "superbwarfare:heli_cannon_fire_3p;150;65", "superbwarfare:heli_cannon_far;250;150", "superbwarfare:heli_cannon_veryfar;400;300", "superbwarfare:small_rocket_fire_1p;150;65", "superbwarfare:small_rocket_fire_3p;150;65", "superbwarfare:into_cannon;30;10", "superbwarfare:into_missile;30;10", "superbwarfare:missile_reload;30;25", "superbwarfare:low_health;30;10", "superbwarfare:no_health;30;10", "superbwarfare:locking_warning;30;10", "superbwarfare:locked_warning;30;10", "superbwarfare:missile_warning;30;10", "superbwarfare:decoy_reload;30;25", "superbwarfare:decoy_fire;150;65", "superbwarfare:secondary_cataclysm_fire_1p;150;65", "superbwarfare:secondary_cataclysm_fire_3p;150;65", "superbwarfare:secondary_cataclysm_far;250;150", "superbwarfare:secondary_cataclysm_veryfar;400;300", "superbwarfare:secondary_cataclysm_loop;30;10", "superbwarfare:secondary_cataclysm_prepare_load;30;10", "superbwarfare:secondary_cataclysm_end;30;10", "superbwarfare:secondary_cataclysm_fire_1p_charge;150;65", "superbwarfare:secondary_cataclysm_fire_3p_charge;150;65", "superbwarfare:secondary_cataclysm_far_charge;250;150", "superbwarfare:secondary_cataclysm_veryfar_charge;400;300", "superbwarfare:lunge_mine_growl;30;10", "superbwarfare:lav_fire_1p;150;65", "superbwarfare:lav_fire_3p;150;65", "superbwarfare:lav_far;250;150", "superbwarfare:lav_veryfar;400;300", "superbwarfare:lav_engine;30;10", "superbwarfare:coax_fire_1p;150;65", "superbwarfare:bmp_fire_1p;150;65", "superbwarfare:bmp_fire_3p;150;65", "superbwarfare:bmp_engine;30;10", "superbwarfare:bmp_missile_fire_1p;150;65", "superbwarfare:bmp_missile_fire_3p;150;65", "superbwarfare:bmp_missile_reload;30;25", "superbwarfare:wheel_step;30;10", "superbwarfare:laser_tower_shoot;30;10", "superbwarfare:yx_100_reload;30;25", "superbwarfare:yx_100_fire_1p;150;65", "superbwarfare:yx_100_fire_3p;150;65", "superbwarfare:yx_100_far;250;150", "superbwarfare:yx_100_veryfar;400;300", "superbwarfare:yx_100_engine;30;10", "superbwarfare:turret_turn;30;10", "superbwarfare:c4_beep;30;10", "superbwarfare:c4_final;30;10", "superbwarfare:c4_throw;30;10", "superbwarfare:c4_detonator_click;30;10", "superbwarfare:prism_fire_1p;150;65", "superbwarfare:prism_fire_3p;150;65", "superbwarfare:prism_fire_1p_2;150;65", "superbwarfare:prism_fire_3p_2;150;65", "superbwarfare:prism_engine;30;10", "superbwarfare:insidious_fire_1p;150;65", "superbwarfare:insidious_fire_3p;150;65", "superbwarfare:insidious_far;250;150", "superbwarfare:insidious_veryfar;400;300", "superbwarfare:insidious_reload_empty;30;25", "superbwarfare:smoke_fire;150;65", "superbwarfare:hpj_11_fire_3p;150;65", "superbwarfare:track_move;30;10", "superbwarfare:rocket_fly;30;10", "superbwarfare:shell_fly;30;10", "superbwarfare:rocket_engine;30;10", "superbwarfare:vehicle_swim;30;10", "superbwarfare:a10_engine;30;10", "superbwarfare:a10_fire;150;65", "superbwarfare:bomb_release;30;10", "superbwarfare:missile_start;30;10", "superbwarfare:bomb_reload;30;25", "superbwarfare:jet_lock;30;10", "superbwarfare:jet_lockon;30;10", "superbwarfare:dps_generator_evolve;30;10", "superbwarfare:melee_hit;30;10", "superbwarfare:aurelia_sceptre_fire_1p;150;65", "superbwarfare:aurelia_sceptre_fire_3p;150;65", "superbwarfare:fly_loop;30;10", "superbwarfare:mp_5_fire_1p;150;65", "superbwarfare:mp_5_fire_3p;150;65", "superbwarfare:mp_5_far;250;150", "superbwarfare:mp_5_veryfar;400;300", "superbwarfare:mp_5_fire_1p_s;150;65", "superbwarfare:mp_5_fire_3p_s;150;65", "superbwarfare:mp_5_reload_normal;30;25", "superbwarfare:mp_5_reload_empty;30;25", "superbwarfare:steel_pipe_hit;30;10", "superbwarfare:steel_pipe_drop;30;10", "superbwarfare:qbz_191_fire_1p;150;65", "superbwarfare:qbz_191_fire_1p_s;150;65", "superbwarfare:qbz_191_fire_3p;150;65", "superbwarfare:qbz_191_fire_3p_s;150;65", "superbwarfare:qbz_191_far;250;150", "superbwarfare:qbz_191_veryfar;400;300", "superbwarfare:qbz_191_reload_normal;30;25", "superbwarfare:qbz_191_reload_empty;30;25", "superbwarfare:smoke_grenade_release;30;10", "superbwarfare:hand_wheel_rot;30;10", "superbwarfare:medium_rocket_fire;150;65", "superbwarfare:ty63_reload;30;25"] + +#==================================================================== +# Sound Attract Mod - Stealth & Detection Configuration +#==================================================================== +[sound_attract_main] + + #--- Field of View Settings --- + [sound_attract_main.fov] + #The default horizontal Field of View for all mobs not in the override list. + #Represents the width of the vision cone in degrees. + #Range: 0.0 ~ 360.0 + defaultHorizontalFov = 200.0 + #The default vertical Field of View for all mobs not in the override list. + #Represents the height of the vision cone in degrees. + #Range: 0.0 ~ 360.0 + defaultVerticalFov = 135.0 + #A list of custom FOV (Field of View) overrides for specific mobs. + #This gives you direct control over the vision cone for any mob. + #Format: "modid:mob_id, horizontal_fov, vertical_fov" + #SPECIAL VALUE: A horizontal FOV of 360 or more grants the mob 360-degree vision (omni-directional). + #Any mob NOT in this list will use the default FOV (200 horizontal, 135 vertical). + customFovOverrides = ["minecraft:spider, 360.0, 360.0", "minecraft:cave_spider, 360.0, 360.0", "minecraft:phantom, 200.0, 280.0", "minecraft:vex, 200.0, 280.0", "minecraft:allay, 200.0, 280.0", "minecraft:bat, 20.0, 20.0", "minecraft:parrot, 200.0, 280.0", "minecraft:ghast, 200.0, 280.0", "minecraft:blaze, 200.0, 280.0", "minecraft:axolotl, 270.0, 90.0", "minecraft:camel, 270.0, 90.0", "minecraft:chicken, 270.0, 90.0", "minecraft:cow, 270.0, 90.0", "minecraft:donkey, 270.0, 90.0", "minecraft:goat, 270.0, 90.0", "minecraft:horse, 270.0, 90.0", "minecraft:mule, 270.0, 90.0", "minecraft:mooshroom, 270.0, 90.0", "minecraft:panda, 270.0, 90.0", "minecraft:pig, 270.0, 90.0", "minecraft:rabbit, 270.0, 90.0", "minecraft:sheep, 270.0, 90.0", "minecraft:sniffer, 270.0, 90.0", "minecraft:strider, 270.0, 90.0", "minecraft:turtle, 270.0, 90.0", "minecraft:villager, 270.0, 90.0", "minecraft:wandering_trader, 270.0, 90.0", "minecraft:slime, 270.0, 120.0", "minecraft:magma_cube, 270.0, 120.0", "minecraft:cod, 300.0, 100.0", "minecraft:pufferfish, 300.0, 100.0", "minecraft:salmon, 300.0, 100.0", "minecraft:squid, 300.0, 100.0", "minecraft:glow_squid, 300.0, 100.0", "minecraft:tadpole, 300.0, 100.0", "minecraft:tropical_fish, 300.0, 100.0", "minecraft:cat, 140.0, 140.0", "minecraft:ocelot, 140.0, 140.0", "minecraft:wolf, 140.0, 140.0", "minecraft:polar_bear, 140.0, 140.0", "minecraft:fox, 140.0, 140.0", "minecraft:frog, 140.0, 140.0", "minecraft:zombie, 200.0, 135.0", "minecraft:husk, 200.0, 135.0", "minecraft:drowned, 200.0, 135.0", "minecraft:skeleton, 200.0, 135.0", "minecraft:stray, 200.0, 135.0", "minecraft:pillager, 200.0, 135.0", "minecraft:vindicator, 200.0, 135.0", "minecraft:evoker, 200.0, 135.0", "minecraft:witch, 200.0, 135.0", "minecraft:piglin, 200.0, 135.0", "minecraft:piglin_brute, 200.0, 135.0", "minecraft:iron_golem, 200.0, 135.0", "minecraft:creeper, 90.0, 90.0", "minecraft:enderman, 180.0, 240.0", "minecraft:guardian, 320.0, 180.0", "minecraft:elder_guardian, 320.0, 180.0", "minecraft:ravager, 160.0, 100.0", "minecraft:hoglin, 160.0, 100.0", "minecraft:zoglin, 160.0, 100.0", "minecraft:shulker, 270.0, 45.0"] + #A list of mobs that will COMPLETELY IGNORE the FOV system. + #Use this for bosses or mobs from other mods with special AI that might break. + #Format: "modid:mob_id" + #Note: Certain vanilla mobs like the Warden are always excluded for stability and cannot be removed. + fovExclusionList = ["minecraft:warden"] + #Blocks in this allowlist are treated as see-through for line-of-sight checks (e.g., modded glass). + #Format: ['modid:block_id'] + nonBlockingVisionAllowList = [] + + #General Stealth System Settings + [sound_attract_main.general_stealth_settings] + #Master switch for all custom stealth mechanics. If false, mobs use vanilla detection (modified only by maxStealthDetectionRange if set). + enableStealthMechanics = true + #How often (in ticks) the server checks ongoing stealth situations (e.g., for grace period). Lower is more responsive but higher performance cost. + #20 ticks = 1 second. + #Range: 5 ~ 100 + stealthCheckInterval = 40 + #How long (in ticks) a mob will keep targeting a player after losing direct detection (due to stealth) before giving up. + #Set to 0 for no grace period (immediate de-aggro if stealth conditions met). + #Range: 0 ~ 200 + stealthGracePeriodTicks = 100 + + #Base detection ranges for players based on their stance. + #These are modified by all other factors (light, camo, etc.). + [sound_attract_main.player_stance_detection_ranges] + #Base detection range (in blocks) when a player is standing. + #Range: 0.0 ~ 128.0 + standingDetectionRangePlayer = 48.0 + #Base detection range (in blocks) when a player is sneaking (crouching). + #Range: 0.0 ~ 128.0 + sneakingDetectionRangePlayer = 20.0 + #Base detection range (in blocks) when a player is crawling (e.g., in a 1-block high gap). + #Range: 0.0 ~ 128.0 + crawlingDetectionRangePlayer = 4.0 + + #How environmental conditions affect stealth. + [sound_attract_main.environmental_factors] + + #Light level effects on detection. + [sound_attract_main.environmental_factors.light_level] + #The light level (0-15) considered neutral (no bonus or penalty to detection). + #Range: 0 ~ 15 + neutralLightLevel = 7 + #Modifier strength per point of light difference from 'neutralLightLevel'. Higher = more impact. + #Positive values increase detection in bright light / decrease in dark. Negative values would invert this. + #Range: 0.0 ~ 0.5 + lightLevelSensitivity = 0.3 + #Minimum multiplier that can be applied due to light levels (e.g., 0.2 for max 80% range reduction in total darkness). + #Range: 0.01 ~ 1.0 + minLightFactor = 0.2 + #Maximum multiplier that can be applied due to light levels (e.g., 2.0 for max 100% range increase in full brightness). + #Range: 1.0 ~ 5.0 + maxLightFactor = 3.0 + #Horizontal radius (blocks) around player to sample for average/effective light level. + #Range: 0 ~ 5 + lightSampleRadiusHorizontal = 2 + #Vertical radius (blocks) around player to sample for average/effective light level. + #Range: 0 ~ 3 + lightSampleRadiusVertical = 1 + + #Weather effects on detection. + [sound_attract_main.environmental_factors.weather] + #Detection range multiplier when raining (e.g., 0.8 for 20% range reduction). + #Range: 0.1 ~ 1.0 + rainStealthFactor = 0.8 + #Detection range multiplier when thundering (overrides rain factor if active). + #Range: 0.1 ~ 1.0 + thunderStealthFactor = 0.6 + + #How player actions affect their detectability. + [sound_attract_main.player_actions] + + #Movement effects on detection. + [sound_attract_main.player_actions.movement] + #Detection range multiplier when player is moving (not sneaking/crawling). >1.0 means easier to detect. + #Set to 1.0 for no penalty. + #Range: 1.0 ~ 3.0 + movementStealthPenalty = 1.2 + #Detection range multiplier if player is NOT moving above threshold (e.g. 0.8 for 20% harder to detect). + #Set to 1.0 for no bonus when stationary. Applies unless sprinting/crawling. + #Range: 0.1 ~ 1.0 + stationaryStealthBonusFactor = 0.8 + #Squared distance threshold to consider a player as 'moving' per stealth check interval. + #Range: 1.0E-4 ~ 0.1 + movementThreshold = 0.003 + + #Invisibility potion effect. + [sound_attract_main.player_actions.invisibility] + #Detection range multiplier when player has Invisibility effect (e.g., 0.1 for 90% range reduction). + #Range: 0.0 ~ 1.0 + invisibilityStealthFactor = 0.1 + + #Settings for item, armor and environmental camouflage. + [sound_attract_main.camouflage_system] + #Master switch for all camouflage effects (item-based and environmental). + enableCamouflage = true + #Enable to penalize players for holding items in their hands, making them more detectable. + enableHeldItemPenalty = true + #Factor by which detection range is multiplied if the player is holding any item in main or off-hand (e.g., 1.1 = 10% more detectable per occupied hand). This is applied before enchantment penalties on held items. + #Range: 1.0 ~ 2.0 + heldItemPenaltyFactor = 1.1 + #Enable to penalize players for wearing enchanted armor or holding enchanted items. + enableEnchantmentPenalty = true + #Factor by which detection range is multiplied for *each* piece of visibly enchanted armor (not concealed) (e.g., 1.05 = 5% more detectable per piece). + #Range: 1.0 ~ 2.0 + armorEnchantmentPenaltyFactor = 1.15 + #Factor by which detection range is multiplied if a visibly enchanted item (not concealed) is held in main or off-hand (e.g., 1.1 = 10% more detectable per enchanted held item). + #Range: 1.0 ~ 2.0 + heldItemEnchantmentPenaltyFactor = 1.15 + + #Camouflage provided by wearing specific armor items. + [sound_attract_main.camouflage_system.item_camouflage] + #List of item IDs (e.g., 'modid:godly_helmet') basically a set that will work everywhere. + camouflageArmorItems = [] + #If true, 'fullArmorStealthBonus' applies only if wearing a complete set of 4 armor pieces, ALL of which are from 'camouflageArmorItems'. + #If false, benefits are gained per piece (see per-slot effectiveness) or via 'fullArmorStealthBonus' if a full set of *any* 4 listed items is worn. + requireFullSetForCamouflageBonus = false + #Stealth effectiveness factor (0.0 to 1.0) if wearing a 'full set' of listed camouflage items. + #Final range *= (1.0 - bonus). E.g., 0.2 = 20% detection range reduction. + #Range: 0.0 ~ 1.0 + fullArmorStealthBonus = 0.85 + #Effectiveness of a listed helmet if per-piece bonuses apply. + #Range: 0.0 ~ 1.0 + helmetCamouflageEffectiveness = 0.15 + #Effectiveness of a listed chestplate if per-piece bonuses apply. + #Range: 0.0 ~ 1.0 + chestplateCamouflageEffectiveness = 0.3 + #Effectiveness of a listed leggings if per-piece bonuses apply. + #Range: 0.0 ~ 1.0 + leggingsCamouflageEffectiveness = 0.25 + #Effectiveness of a listed boots if per-piece bonuses apply. + #Range: 0.0 ~ 1.0 + bootsCamouflageEffectiveness = 0.15 + #Maximum total effectiveness (0.0 to 1.0) from all item camouflage sources (full set or sum of pieces). Prevents range from becoming too small. + #Range: 0.0 ~ 0.99 + maxCamouflageEffectivenessCap = 0.85 + #If 'requireFullSetForCamouflageBonus' is TRUE, but player isn't wearing a full set of listed items, should per-piece bonuses still apply for the listed items they ARE wearing? + allowPartialBonusIfFullSetRequired = true + + #Camouflage based on matching armor color to the surrounding environment. + [sound_attract_main.camouflage_system.environmental_camouflage] + #Enable camouflage based on armor color matching the environment. + enableEnvironmentalCamouflage = true + #If true, significantly mismatched armor/environment colors will INCREASE detection range. + enableEnvironmentalMismatchPenalty = true + #Maximum effectiveness factor (0.0 to 1.0) if armor color perfectly matches environment. + #Final range *= (1.0 - effectiveness). + #Range: 0.0 ~ 1.0 + environmentalCamouflageMaxEffectiveness = 0.7 + #Tolerance for color matching (sum of absolute RGB differences). Lower = stricter match needed. + #Range: 0 ~ 765 + environmentalCamouflageColorMatchThreshold = 90 + #Detection range multiplier if armor color SIGNIFICANTLY mismatches the environment (e.g., 1.5 for 50% INCREASED range). + #Applies if color difference exceeds 'environmentalMismatchThreshold'. Set to 1.0 to disable penalty. + #Range: 1.0 ~ 3.0 + environmentalMismatchPenaltyFactor = 1.3 + #Color difference threshold beyond which the 'environmentalMismatchPenaltyFactor' applies. + #Should be greater than 'environmentalCamouflageColorMatchThreshold'. E.g., if match threshold is 90, mismatch could be 200. + #Range: 0 ~ 765 + environmentalMismatchThreshold = 100 + #If true, only dyed leather armor contributes its color. If false, uses 'customArmorColors' for non-leather/undyed items. + environmentalCamouflageOnlyDyedLeather = false + #Map of item ID to average hex color (e.g., 'minecraft:iron_chestplate;#A0A0A0'). + #Used for environmental camouflage if 'environmentalCamouflageOnlyDyedLeather' is false. + customArmorColors = ["minecraft:leather_helmet;#804F27", "minecraft:leather_chestplate;#804F27", "minecraft:leather_leggings;#804F27", "minecraft:leather_boots;#804F27", "minecraft:chainmail_helmet;#58585A", "minecraft:chainmail_chestplate;#58585A", "minecraft:chainmail_leggings;#58585A", "minecraft:chainmail_boots;#58585A", "minecraft:iron_helmet;#CACACA", "minecraft:iron_chestplate;#CACACA", "minecraft:iron_leggings;#CACACA", "minecraft:iron_boots;#CACACA", "minecraft:golden_helmet;#F5E54C", "minecraft:golden_chestplate;#F5E54C", "minecraft:golden_leggings;#F5E54C", "minecraft:golden_boots;#F5E54C", "minecraft:diamond_helmet;#39D5CD", "minecraft:diamond_chestplate;#39D5CD", "minecraft:diamond_leggings;#39D5CD", "minecraft:diamond_boots;#39D5CD", "minecraft:netherite_helmet;#403B3B", "minecraft:netherite_chestplate;#403B3B", "minecraft:netherite_leggings;#403B3B", "minecraft:netherite_boots;#403B3B", "minecraft:turtle_helmet;#7B8834"] + #Radius (blocks) around player to sample for average environmental color. + #Range: 0 ~ 3 + envColorSampleRadius = 1 + #Starting Y-offset relative to player pos for env color sampling (e.g., 0 for player's feet level). + #Range: -2 ~ 2 + envColorSampleYOffsetStart = 0 + #Ending Y-offset relative to player pos for env color sampling (e.g., -1 for blocks at feet and one below). Must be <= YOffsetStart. + #Range: -2 ~ 2 + envColorSampleYOffsetEnd = -1 + + #Absolute min/max detection ranges after all modifiers are applied. + [sound_attract_main.detection_range_limits] + #The absolute minimum detection range (in blocks). Player cannot be harder to detect than this, regardless of modifiers. + #Set > 0 to prevent mobs from being completely blind unless intended by other mechanics. + #Range: 0.0 ~ 64.0 + minStealthDetectionRange = 0.5 + #The absolute maximum detection range (in blocks). Player cannot be easier to detect than this. + #Also used as default range if 'enableStealthMechanics' is false. + #Range: 1.0 ~ 256.0 + maxStealthDetectionRange = 64.0 + +#Tacz Integration Configuration +[tacz] + #Enable Tacz gun integration + enableTaczIntegration = true + #Tacz reload sound range (fallback, calculated as shootDb/20.0 for known guns) + #Range: 1.0 ~ 128.0 + taczReloadRange = 9.0 + #Tacz reload sound weight (fallback, calculated as (shootDb/10.0)/2.0 for known guns) + #Range: 0.0 ~ 10.0 + taczReloadWeight = 1.0 + #Tacz shoot sound range (fallback, calculated as db for known guns) + #Range: 1.0 ~ 256.0 + taczShootRange = 140.0 + #Tacz shoot sound weight (fallback, calculated as db/10.0 for known guns) + #Range: 0.0 ~ 10.0 + taczShootWeight = 10.0 + #Tacz gun shoot decibels. Format: 'modid:item;decibels'. Example: 'tacz:akm;120.0' + taczGunShootDecibels = ["suffuse:aks74u;157.0", "suffuse:python;155.0", "suffuse:tec9;160.0", "suffuse:tt33;158.0", "tacz:deagle_golder;164.0", "suffuse:tti2011;158.0", "tacz:m1911;157.0", "suffuse:trapper50cal;172.0", "tacz:deagle;164.0", "tacz:cz75;157.0", "tacz:p320;157.0", "suffuse:viper2011;158.0", "tacz:m700;160.0", "tacz:m107;171.0", "tacz:m95;172.0", "tacz:ai_awp;170.0", "suffuse:aw50;173.0", "suffuse:gm6;172.0", "suffuse:m200;173.0", "suffuse:xm7;165.0", "suffuse:qbu191;164.0", "suffuse:n4;161.0", "suffuse:qbz951;160.0", "suffuse:ash12;165.0", "suffuse:qbz951s;160.0", "suffuse:qbz192;159.0", "suffuse:an94;161.0", "tacz:sks_tactical;159.0", "tacz:ak47;159.0", "tacz:type_81;158.0", "tacz:qbz_95;160.0", "tacz:hk416d;161.0", "tacz:m4a1;159.0", "tacz:m16a1;159.0", "tacz:hk_g3;161.0", "tacz:m16a4;159.0", "tacz:mk14;162.0", "tacz:scar_l;161.0", "tacz:scar_h;162.0", "tacz:aug;160.0", "tacz:db_short;165.0", "tacz:db_long;166.0", "tacz:m870;165.0", "tacz:aa12;161.0", "tacz:ump45;158.0", "tacz:hk_mp5a5;158.0", "tacz:uzi;157.0", "suffuse:pp19;157.0", "tacz:vector45;158.0", "tacz:p90;156.0", "tacz:rpg7;180.0", "tacz:m320;172.0", "suffuse:m79;172.0", "suffuse:pkp;165.0", "tacz:m249;165.0", "tacz:rpk;164.0", "tacz:g36k;135.0", "tacz:spr15hb;140.0", "tacz:b93r;125.0", "tacz:glock_17;125.0"] + #Tacz attachment sound reduction. Format: 'modid:item;reduction'. Example: 'tacz:suppressor;15.0' + taczAttachmentReductions = ["tacz:muzzle_brake_cthulhu;-3.0", "tacz:muzzle_brake_pioneer;-3.0", "tacz:muzzle_brake_cyclone_d2;-3.0", "tacz:muzzle_brake_trex;-5.0", "tacz:muzzle_silencer_mirage;35.0", "tacz:muzzle_silencer_vulture;45.0", "tacz:muzzle_silencer_knight_qd;40.0", "tacz:muzzle_silencer_ursus;30.0", "tacz:muzzle_silencer_ptilopsis;30.0", "tacz:muzzle_silencer_phantom_s1;30.0", "tacz:muzzle_compensator_trident;-2.0", "tacz:deagle_golden_long_barrel;20.0"] + #Default reduction value for Tacz attachments if the attachment id is not in the list. + #Range: -300.0 ~ 300.0 + taczAttachmentReductionDefault = 20.0 + #The base visual detection range (in blocks) when a gunshot occurs, before muzzle attachments are factored in. + #Range: 16.0 ~ 512.0 + gunshotBaseDetectionRange = 128.0 + #How long (in ticks) the increased detection from a gunshot lasts. 20 ticks = 1 second. + #Range: 1 ~ 200 + gunshotDetectionDurationTicks = 60 + #Tacz attachment VISUAL FLASH reduction. A positive value reduces flash range, a negative value INCREASES it (e.g., for muzzle brakes)., Format: 'modid:item;reduction_amount' + taczMuzzleFlashReductions = ["tacz:muzzle_silencer_mirage;100.0", "tacz:muzzle_silencer_vulture;110.0", "tacz:muzzle_silencer_knight_qd;105.0", "tacz:muzzle_silencer_ursus;90.0", "tacz:muzzle_silencer_ptilopsis;90.0", "tacz:muzzle_silencer_phantom_s1;90.0", "tacz:muzzle_brake_cthulhu;-10.0", "tacz:muzzle_brake_pioneer;-10.0", "tacz:muzzle_brake_cyclone_d2;-10.0", "tacz:muzzle_brake_trex;-15.0", "tacz:muzzle_compensator_trident;-5.0"] + +["Simple VC"] + #Enable Simple Voice Chat (SVC) integration. + #When enabled, voice chat frames generate a dynamic sound whose range scales with the audio's peak level (dBFS). + #Optional: Only takes effect if SVC is installed. + enableVoiceChatIntegration = true + #Base range used when the player is whispering in SVC (before applying dB multiplier). + #Range: 1 ~ 64 + voiceChatWhisperRange = 16 + #Base range used for normal speaking in SVC (before applying dB multiplier). + #Range: 1 ~ 128 + voiceChatNormalRange = 32 + #Weight assigned to the generated SVC sound event. + #Range: 0.0 ~ 10.0 + voiceChatWeight = 9.0 + #Mapping from normalized dB thresholds to range multipliers for SVC. + #Normalized dB is in [0..127], where 0 = silence and 127 = max peak (0 dBFS). + #Each entry format: 'threshold:multiplier'. Entries are evaluated from highest threshold to lowest. + #Defaults replicate the built-in behavior: >=50 -> 1.0, >=30 -> 0.7, >=10 -> 0.3. + voiceChatDbThresholdMap = ["110:2.0", "90:1.8", "75:1.5", "50:1.0", "30:0.7", "10:0.3", "0:0.05"] + +#Muffling settings for different block types. +[muffling] + #Enable/disable block muffling effects on sound range/weight. + enableBlockMuffling = true + #Maximum number of blocks to check for muffling between sound source and mob. Higher values are more accurate but more performance intensive. + #Range: 8 ~ 256 + maxMufflingBlocksToCheck = 16 + #Sound muffling factor for wool blocks. Default: 0.15 + #Range: 0.0 ~ 1.0 + mufflingFactorWool = 0.15 + #Sound muffling factor for solid blocks. Default: 0.35 + #Range: 0.0 ~ 1.0 + mufflingFactorSolid = 0.35 + #Sound muffling factor for non-solid blocks. Default: 0.7 + #Range: 0.0 ~ 1.0 + mufflingFactorNonSolid = 0.7 + #Sound muffling factor for thin blocks (e.g., carpets, panes). Default: 0.9 + #Range: 0.0 ~ 1.0 + mufflingFactorThin = 0.9 + #Sound muffling factor for liquid blocks. Default: 0.5 + #Range: 0.0 ~ 1.0 + mufflingFactorLiquid = 0.5 + #Sound muffling factor for air blocks. Default: 1.0 + #Range: 0.0 ~ 1.0 + mufflingFactorAir = 1.0 + #List of custom wool block IDs for sound muffling. Format: 'modid:blockid'. Default: empty list. + customWoolBlocks = [] + #List of custom solid block IDs for sound muffling. Format: 'modid:blockid'. Default: empty list. + customSolidBlocks = [] + #List of custom non-solid block IDs for sound muffling. Format: 'modid:blockid'. Default: empty list. + customNonSolidBlocks = [] + #List of custom thin block IDs for sound muffling. Format: 'modid:blockid'. Default: empty list. + customThinBlocks = [] + #List of custom liquid block IDs for sound muffling. Format: 'modid:blockid'. Default: empty list. + customLiquidBlocks = [] + #List of custom air block IDs for sound muffling. Format: 'modid:blockid'. Default: empty list. + customAirBlocks = [] + +[profiles] + #List of special mob profiles. Each profile is a string with 5 parts separated by ';'. + #Format: profileName;mobId;nbtMatcher;soundOverridesString;detectionOverridesString + #- profileName: A unique name (e.g., 'AlphaZombie'). + #- mobId: Mob's resource location (e.g., 'minecraft:zombie'). Make sure it is in attractedEntities. Use '*' or empty to match any mob if NBT is specific. + #- nbtMatcher: Any compound NBT (e.g., '{IsAlpha:1b}'). Leave empty for no NBT matching. + #- soundOverrides: Comma-separated 'soundId:range:weight' (e.g., 'minecraft:entity.player.hurt:30.0:2.0,minecraft:block.chest.open:25.0:1.5'). Leave empty for no overrides, and make sure the sound IDs are in the soundIdWhitelist. + #- detectionOverrides: Comma-separated 'stanceName:value' (e.g., 'standing:50.0,sneaking:25.0'). Stances: standing, sneaking, crawling. Leave empty for no overrides. + #Example: AlphaZombie;minecraft:zombie;{IsAlpha:1b};minecraft:entity.player.hurt:30.0:2.0;standing:50.0,sneaking:25.0 + #To add more profiles, just add more strings to the list. + specialMobProfilesRaw = ["GreedyGoblin;minecraft:piglin;;minecraft:block.chest.open:30.0:2.5,minecraft:entity.player.death:50.0:3.0;standing:40.0,sneaking:20.0,crawling:10.0", "SmartZombie;minecraft:zombie;{IsAlpha:1b};minecraft:entity.player.hurt:30.0:2.0;standing:80.0,sneaking:45.0,crawling:15.0", "InsaneVillager;minecraft:villager;;minecraft:wooden_door.open:25.0:1.5,minecraft:block.barrel.open:20.0:1.0;"] + #List of special player profiles. Each string has 3 parts separated by ';'. + #Format: profileName;nbtMatcher;detectionOverridesString + #- profileName: A unique name (e.g., 'FelineOrigin'). + #- nbtMatcher: Any compound NBT to match on the player (capabilities included). Use valid SNBT. Keys containing ':' must be quoted (e.g., '{"ForgeCaps":{"origins:origins":{"Origins":{"origins:origin":"origins:feline"}}}}'). Leave empty to match all players. + #- detectionOverridesString: Comma-separated 'stanceName:value' (e.g., 'standing:40.0,sneaking:20.0,crawling:10.0'). Valid stances: standing, sneaking, crawling. + #Example: FelineOrigin;{"ForgeCaps":{"origins:origins":{"Origins":{"origins:origin":"origins:feline"}}}};standing:24.0,sneaking:10.0,crawling:3.0 + specialPlayerProfilesRaw = ["FelineOrigin;{\"ForgeCaps\":{\"origins:origins\":{\"Origins\":{\"origins:origin\":\"origins:feline\"}}}};standing:24.0,sneaking:10.0,crawling:3.0", "DinosaurHatched;{\"ForgeCaps\":{\"fossil:player\":{\"HatchedDinosaur\":1b}}};standing:50.0"] + diff --git a/index.toml b/index.toml index cfca19b..ac103b5 100644 --- a/index.toml +++ b/index.toml @@ -315,6 +315,10 @@ hash = "f85d096050d7f762e84eafd756599ba7a6468e37df45843ee119d0071c8c714f" file = "config/sodiumextras-client.toml" hash = "a6d1a2d26e596953c4b93e19c593ffc7d5d7359cb3a5cfcaad61c0c0e2bd7a2c" +[[files]] +file = "config/soundattract-common.toml" +hash = "900e6fdf9b3695470421b0f2f431c6dbdb441cee39c26b450bee1eb3b4307fdf" + [[files]] file = "config/sparsestructures.json5" hash = "9b2e5442da12a3fe3239825a25e09394ef95d917b5e5a11de9c4d39227a9b2a9" @@ -1109,6 +1113,11 @@ file = "mods/delightful.pw.toml" hash = "0f2101fa1d95b52baa3aa1dccb587371c7e4fd5812d3ad4dca7b427feb8fe6dd" metafile = true +[[files]] +file = "mods/deltaboxlib.pw.toml" +hash = "3605597ba3c20ae649d26cb82b8d4e365fd01d5f5e199e88bde0137d94a2b10f" +metafile = true + [[files]] file = "mods/despawning-eggs-hatch.pw.toml" hash = "67b8e5a7aba13af94d9f4a596138a1e0aa8754ca5b080a295e923097fc342f53" @@ -1998,6 +2007,11 @@ file = "mods/multibeds.pw.toml" hash = "83f175e8d8e9247d536cc64fbdd86e42be5a52a80f8f4f4defc0797410270819" metafile = true +[[files]] +file = "mods/musicbox.pw.toml" +hash = "4daeb663b5c7748725c9c96e30f30a537f2d6395a64b723274c9a8b07c3cf510" +metafile = true + [[files]] file = "mods/my-nethers-delight.pw.toml" hash = "019b1fc9ddc90219203532bf68538e1f1b2487599c6c9b9a3a074df0abd66b48" diff --git a/mods/deltaboxlib.pw.toml b/mods/deltaboxlib.pw.toml new file mode 100644 index 0000000..d714a5a --- /dev/null +++ b/mods/deltaboxlib.pw.toml @@ -0,0 +1,13 @@ +name = "Deltabox Lib" +filename = "deltaboxlib-forge-2.2.0+1.20.1.jar" +side = "both" + +[download] +url = "https://cdn.modrinth.com/data/FDGHOWuC/versions/vpF66nb3/deltaboxlib-forge-2.2.0%2B1.20.1.jar" +hash-format = "sha512" +hash = "d2ee80e90bf25819dcf0ff03940c9134bca03e74405da1595bcb1c2a12c4c52a595dab203e63082f521c434519db6125d9dc2512b6e4434ceff72508566af88e" + +[update] +[update.modrinth] +mod-id = "FDGHOWuC" +version = "vpF66nb3" diff --git a/mods/musicbox.pw.toml b/mods/musicbox.pw.toml new file mode 100644 index 0000000..7f2bb6f --- /dev/null +++ b/mods/musicbox.pw.toml @@ -0,0 +1,13 @@ +name = "Music Box" +filename = "musicbox-forge-2.0.2+1.20.1.jar" +side = "both" + +[download] +url = "https://cdn.modrinth.com/data/hKWZWeEG/versions/q3HFwzq3/musicbox-forge-2.0.2%2B1.20.1.jar" +hash-format = "sha512" +hash = "4557c42734181b5ababf98b0c3a13fedd88eb6dd5edfea6478be4a228fc4462c438966053a13fcfa16371db34bf7760330fd023376969d346dd0c7c2af318c93" + +[update] +[update.modrinth] +mod-id = "hKWZWeEG" +version = "q3HFwzq3" diff --git a/pack.toml b/pack.toml index 71ac020..012ba82 100644 --- a/pack.toml +++ b/pack.toml @@ -6,7 +6,7 @@ pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "57ea8818bb408ec3d86f4c0f30a418561740773813e0ec5534143dd01ace90ca" +hash = "121d920fc85ca0f2b7abb57db24b376aa7de6ab09889a74ceaf2a1ea8c098bec" [versions] forge = "47.4.8"