Dynamic Surroundings

Dynamic Surroundings

51M Downloads

DS and Abyssalcraft sound issue

MineyShadow opened this issue ยท 12 comments

commented

Mod Version: 1.12.2/3.5.4.3

Forge Version: 1.12.2 - 14.23.5.2808

Link to crash log (if applicable): N/A

Description: No other mods installed, With both abyssalcraft and dynamic surroundings present, There is a sound issue where the nether ambient sound plays constantly in every biome/dimension.

commented

I'm also having the same issue.

commented

Another person with the same issue. Anyone found a solution?

commented

Same here - the Nether biome sound plays everywhere. The workaround I'm using in the meantime is to simply disable dsurround:dimension.nether in the individual sound config menu.

commented

@GrumpyPirate But that's disables the only sound we can hear, right? :)

commented

Yeah, it just disables the 'bugged' sound effect. It's a shame, because by doing so it removes some of the atmosphere of going to the Nether, but I'd take that over constantly hearing it everywhere!

commented

The culprit is inside the .jar, in /assets/dsurround/dsurround/data/abyssalcraft.json:

	"biomes": [
		{
			"conditions": "biome.name == 'Player'",
			"_comment": "Add sound to Omothol",
			"sounds": [
				{
					"sound": "dsurround:dimension.nether",
					"conditions": "player.dimensionName == 'Omothol'"
				}
			]
		},
	...

According to the conditions, it should obviously play only when the player is in the Omothol dimension. However, none of those conditions appear to make any sense to the parser or biome matcher, and somehow it decides that this means it should evaluate to true for all biomes rather than false (as a WAG, I presume "biome.name == 'Player'" always evaluates true, and then "player.dimensionName == 'Omothol'" always evaluates true because player.dimensionName is an invalid getter?).

In any case, because abyssalcraft.json loads before any other mod's .json, it takes ultimate precedence. Thus: nether ambiance in all biomes. Hooray! Or not.

[edit 4] Fix for the developer: yep, just change player.dimensionName to dim.name.

The below fix is required for everyone who doesn't recompile the whole thing from scratch, because editing the .json directly in the .jar won't work without deleting META-INF, but deleting META-INF will also nuke the embedded library and make the mod not work either. There may be a permutation of deleting some but not all of the signed files from the archive, but after wasting so much time editing a signed .jar before realising my error, my give-a-crap level ran out. ;-)

Using an external configuration file, with a few extra changes for better integration:

  • Navigate to .minecraft/config/dsurround.
  • Extract the abyssalcraft_override.json from this abyssalcraft.zip into that folder. (NOT the .jar.)
  • Open up Dynamic Surroundings in the Mod Options and find General Options, and then add "abyssalcraft_override.json" to the External Configuration Files Option.
    ** To do that manually, edit dsurround.cfg in the same folder and add the line abyssalcraft_override.json to the S:"External Configuration Files" section under the General section. It should look something like:
    S:"External Configuration Files" <
        abyssalcraft_override.json
     >
  • Restart Minecraft (changes to the fake_player seem to require a full restart, not just a /ds reload).
  • Don't forget to go into your Mod Options and re-enable the dsurround:dimension.nether sound effect if you disabled it! (That also actually cost me a whole hour of hair-pulling, so... yeah. Today has been a lot of wasted time for a lot of stupid mistakes. Yippee. (Fortunately I got in a few hours of play, too.)`)

Subjective changes included:

  • Sound reset on Omothol biome to remove owl/coyote/etc. sounds.
  • Add same purple biome fog to Omothol.
  • Added some spooky-ish sounds to Omothol biome to replace the owls/coyotes/etc. that were removed. Shub-Niggurath's grandchildren are thinking about eating you.
  • Explicitly prevent haze, fog, and DS weather effects from showing up in Omothol dimension.

How did I make it work? Brute !&$%ing force: it resets the player sound effects to get rid of the faulty Omothol nether sound definition added by the built-in AbyssalCraft file, and then re-adds correct versions of the original player sound effects plus a corrected Omothol definition. It ain't pretty, but it gets the job done.


The Tutorial: Condition Strings page here on the Git wiki will also have to be updated to remove the bad references to player.dimensionName. This must simply be part of the same API change in the older DS versions -- I note some of the wiki pages still refer to the old "entries" format, too.

commented

Just a quick update for anyone who's been following: fix (and walkthrough) is now edited in above!

commented

@jtgibson01 Fantastic. Thanks for digging into this one!

commented

BTW, I am fixing for the next maintenance update. Bet you guys thought I died or something.

commented

Pushed DynamicSurroundings-1.12.2-3.5.5.0 to CurseForge.

commented

@OreCruncher, we're glad you're back! :) I hope everything is alright

commented

I'm doing pretty good. Just was a rough start to the year, though the year is almost over. :)