CHANGELOG

1.5.0

  • Performance optimizations to help with hitches when many addons are installed
  • Improved how asset conflicts are logged in console
  • Fixed prefab replacements not working
  • Fixed volume/pitch settings in AudioClip replacements being applied over GunSound/GunAudioSet replacements if both were loading the same asset

Also in other news, documentation for making texture, material, mesh, and prefab replacements is finally done! You can read it here.

1.4.3

  • Fixed SideloaderMint not replacing AudioClips correctly if cached replacements for the same sounds were also loaded by old Sideloader.

1.4.2

Additions

  • Added ability to reload all addons by pressing Ctrl + R. New assets might not load in until the scene is also reloaded.

1.4.1

Additions for addon developers

  • Added support for replacing individual GunAudioSets of multi-caliber ModularWorkshop guns (as long as they have unique names).

1.4.0

  • Texture, material, and mesh replacements can now replace assets from sharedassets bundles, as long as they’re loaded at game startup
    • To use, put SharedAssets: in target instead of h3vr_data\\streamingassets\\<bundle name>:
    • Proper documentation will be available in the wiki soon!
  • Fixed material, mesh, and prefab replacements not working in revision "2" manifests
  • Manifest path and paths properties now can only contain wildcards if they belong to a sound replacement asset type

1.3.3

  • Fixed even more memory usage spikes, related to texture and material replacers

1.3.2

  • Attempted to fix a crash related to mesh replacements (fixed memory usage spikes)

1.3.1

Additions for addon developers

1.3.0

Additions for addon developers

  • Added soundVolumeMultiplier and soundPitchMultiplier properties for AudioClip and GunSound/AudioSet replacements. If used together with the existing soundVolume and soundPitch properties, the multiplier is applied after them.
  • Added wildcard support to the path and paths properties.
    • Wildcards can only be used in the file name segment of the path. For example "path": "MySounds/*/*" is invalid.
    • Wildcards do not match directories and can not search directories recursively.
    • Example usage:
      • "path": "Gunshots/*" — selects all files in the "Gunshots" directory
      • "paths": ["concrete_impact*", "rock_impact*"] — selects all files in the same directory as the manifest whose names start with "concrete_impact" or "rock_impact"
      • "paths": ["*.wav"] — selects all .wav files in the same directory as the manifest
  • Added support for accessing files outside of an addon's directory.
    • You can reference any file as long as it's in your mod's plugin directory.
    • Paths are still relative to the manifest, so use ../ to navigate up to the parent directories.
    • For example, to access files from one sub-addon in another sub-addon you can do something like this:
      • "path": "../OtherSubAddon/some_file.wav"

Breaking changes

  • All paths specified in path or paths fields are now validated before an addon loads.
    • If any path points to a non-existent file, the addon will not load
    • Wildcards are also validated and must match at least one file
    • All addons currently uploaded on Thunderstore were tested to ensure compatibility

1.2.2

  • Sub-addon directory names now have less strict validation — allowed characters are now: a-z, A-Z, 0-9, , _, ., ,, (, and ).

1.2.1

Additions

  • If you uninstall an addon, all of it's associated settings will now be removed from the config file upon launching the game.
    • This behaviour is enabled by default, but can be disabled in the config file.

1.2.0

Additions

  • Added ability to disable addons and set addon priorities via the config file.
    • If a mod author bundles several addons in one Thunderstore mod, you can configure them individually.
    • Addon priorities determine their load order in case of conflicts.
    • You must launch the game to have your installed addons appear in the config file.

Changes for addon developers

  • Added optional priority parameter to addon manifests, which can be used to specify the default priority value in an addon's config.
    • The parameter takes values between -20 and 20.
    • If the parameter is not specified, default addon priority of 0 will be used.
  • Stricter validation for sub-addon directory names — allowed characters are now a-z, A-Z, 0-9, and _.

1.1.1

Fixes

  • Fixed filepath not being logged in the console when a file could not be loaded from an addon.

1.1.0

Additions for addon developers

  • Added new target sub-segments for bolt-related events in GunAudioSet and GunSound replacements, which can be used to scope them to only trigger in specific circumstances:
    • AfterShot (for BoltSlideForward) — triggers only after a firearm shot.
    • AfterManualCharge (for BoltSlideForward) — triggers only after a player's manual interaction with the firearm bolt.
    • AfterHKSlap (for BoltSlideForward:AfterManualCharge and HandleForward) — triggers only after a bolt handle HK-slap.
    • These are meant to serve as a better alternative to using the vanilla BoltRelease event, which is very unreliable.
    • See the wiki for further explanations on how to use these.
  • Added support for "_mute" as a valid value for the path parameter in AudioClip, GunAudioSet, and GunSound replacements. Using "_mute" will silence the target sound, which means you no longer need a dedicated .wav file for that in your addons. Requires ManifestRevision "2".

Other changes

  • Names of addons that are being loaded by SideloaderMint are now printed to the console when launching the game.

1.0.0

Initial release