[1.12.2-v3.0.18] Rain / Snow Stops All Sounds
Ameranth opened this issue ยท 6 comments
Hello again!
Working some more on a sound engine, and I think the logic for raining
stops sounds which don't define raining=true/false
when it rains--including things like thunder and wind. I believe the problem is here, in AmbientCondition.java, because it returns null for any sound that has no raining data when it rains:
if (raining != null && raining ? !env.raining : env.overallRaining)
return null;
Perhaps it should be something like this?:
if (raining != null && (raining ? !env.raining : env.overallRaining))
return null;
This way sounds with no raining
data will always play.
Apologies if I've misunderstood the code!
Update: Another result of this issue is that rain sound (from this mod) isn't played at all, because even though its region selector has raining=true
, its sound selector has no definition for raining
.
Thank you for the reply!
Sorry, I will try to clarify:
- No sounds from AmbientSounds3 play when it rains, because of this code in AmbientCondition.java:
if (raining != null && raining ? !env.raining : env.overallRaining)
return null;
-
This code has two problems:
- Any sound or region in engine.json without
raining=true/false
will be like it hasraining=false
. This is incorrect, because some sounds are wanted all the time, like for example wind. - Even rain and thunderstorm sounds do not play when it rains, because engine.json does not have
raining=true
in their regions and sounds, which this code requires (they only have it in the region).
- Any sound or region in engine.json without
-
To fix both problems, the code should be changed so that sounds and regions without
raining=true/false
will play no matter if it rains or not.- Using this code instead should fix it (parenthesis around
(raining ? !env.raining : env.overallRaining)
is the change):
- Using this code instead should fix it (parenthesis around
if (raining != null && (raining ? !env.raining : env.overallRaining))
return null;
- Here is another example of a sound that should play all the time, but does not when it rains because of this problem--in
engine.json
, the region "cave-ambience" on line 303:
{
"name": "cave-ambience",
"regions": [ "cave" ],
"min-height-relative": {
"max": -2,
"fade": 2
},
"light": {
"max": 8,
"fade": 2
},
"blocks": {
"materials": [ "rock" ]
},
"sounds": [
{
"name": "suspense",
"files": [ "ambientsounds:suspense.cave1", "ambientsounds:suspense.cave2" ],
"length": {
"min": 400,
"max": 700
},
"transition": 200
}
]
}
This should play cave sounds always, but it will not during rain because it does not have raining=true/false
.
I have been experiencing this too, and its kind of unnerving to have everything go silent. I have used Corgi Taco's weather mod and similar things happen with their custom weather conditions, everything goes silent in cloudy weather for example.