OreCruncher / BetterRain

Based on the BetterRain mod from Wirsbo
20 stars 12 forks source link

[Enhancement] Add periodic sound emitter #103

Closed DrakoAlcarus closed 8 years ago

DrakoAlcarus commented 8 years ago

In the 1.7 version I am using, the game keeps clearing the config file of blocked sounds and the config file I made to try to add sounds. It's getting extremely annoying and I even updated the mod today.

Also, the page you linked me doesn't tell me where to add sounds, but I can't find a way to add or run the sounds anyway because of the persistent issue above.

OreCruncher commented 8 years ago

You can find a release containing the PERIODIC emitter here. Give it a try and let me know how it goes.

DrakoAlcarus commented 8 years ago

It works fantastically! All I have to do is integrate tree wind, bird and critter sounds, and other drip particle sounds.

OreCruncher commented 8 years ago

Excellent! If you plan on making this resource pack generally available I can put a link on my CurseForge project page to your site so folks know how to find it. Of course, this would happen once I get the current version to release level, which should be soon.

DrakoAlcarus commented 8 years ago

I got a crash when finding a Mineshaft

java.lang.NullPointerException: Unexpected error at net.minecraft.client.audio.SoundManager.func_148594_a(SoundManager.java:394) at net.minecraft.client.audio.SoundManager.func_148605_d(SoundManager.java:203) at net.minecraft.client.audio.SoundHandler.func_73660_a(SourceFile:179) at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:2013) at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:973) at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:898) at net.minecraft.client.main.Main.main(SourceFile:148) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

OreCruncher commented 8 years ago

Forge version?

DrakoAlcarus commented 8 years ago

Forge10.13.4.1614-1.7.10

I can't remember if walking on rails made a metal sound, but it doesn't seem to do this anymore.

OreCruncher commented 8 years ago

Just tried the rail walk thing and I get the sound. What you can do is turn on debug logging using the dsurround.cfg file. In the launcher output window you will see a trace of the sounds that are played with footsteps. This is what I see:

[17:29:38] [Client thread/INFO] [dsurround]:   Playing acoustic grass,rails for event WALK
[17:29:38] [Client thread/INFO] [dsurround]:     Playing sound dsurround:fs.metalbar.metalbar_run (v0.01, p1.00)
DrakoAlcarus commented 8 years ago

Ignore that part, we have a bug to fix first.

OreCruncher commented 8 years ago

Can you duplicate this exception at will? Reason is I would like you turn debug on and give me the log. This is all in Minecraft code so it is unclear as to how Dynamic Surroundings is involved. My hope is that the debug trace will give me more context.

EDIT: Also, were you wandering around normally when this happened, or did something special happen? Special like logging in, changing dimensions, etc.

DrakoAlcarus commented 8 years ago

I was in a Mine-shaft when it first happened, and each consecutive crash after that was near a Mine-shaft.

The third time I crashed (just now), it was the rock tumbling noise you have that played right when the game crashed.

Below the sound system counter, it displayed 3-4 items (it flashed by before the crash). Two were EMITTER and one was DELAYED.

When it crashes again, I will press PrintScreen and also give you the log.

Also, the rails are fine, I just had other sounds on my computer that flushed out some game noises.

DrakoAlcarus commented 8 years ago

After a bit of inspection, I noticed that after it displays for a few ticks, it flashes to PLAYING.

OreCruncher commented 8 years ago

You sure it is PLAYING and not PENDING? Reason I ask is that PENDING is something in my code, PLAYING is not and would be real strange.

EDIT: I am sure it is PENDING you are seeing. When a drop sound transitions from DELAYED to PENDING its real fast, and your brain kinda blends the two strings together to PLAYING because it is "filling in the blanks" with what you are seeing.

EDIT2: Also, what are the numbers after "SoundSystem" in the debug display? Should look like "xx/yy", where "xx" is the current number of queued sounds in the Minecraft sound system, and "yy" is the max number of channels configured. "xx" should vary quite a bit based on whats going on in game; "yy" is fixed and will not change.

OreCruncher commented 8 years ago

Posted a BETA to CurseForge that has the PERIODIC sound option. I also made some changes internally based on what I can glean from the call stack you provided. At the moment this looks to be a Minecraft derp, but I did alter some of the control flow and behavior to be more defensive and avoid the condition. Give a try and let me know if it helps.

DrakoAlcarus commented 8 years ago

I have been messing with other things lately, such as villager styled fortification, and some other building projects. I haven't been able to get into a cave and see if it crashes. On the other hand, is there a limit to sounds I can block? After the update, it seems any more sounds to the list of blocked sounds I add, they won't get blocked.

OreCruncher commented 8 years ago

No - there isn't a limit. Take a look at your dsurround.cfg file. All the sounds you block should be listed.

DrakoAlcarus commented 8 years ago

They are listed. What I'm saying is that the sounds I added into the .cfg after your mod update won't get blocked.

On Sat, Mar 5, 2016 at 4:58 PM, OreCruncher notifications@github.com wrote:

No - there isn't a limit. Take a look at your dsurround.cfg file. All the sounds you block should be listed.

— Reply to this email directly or view it on GitHub https://github.com/OreCruncher/BetterRain/issues/103#issuecomment-192774748 .

OreCruncher commented 8 years ago

Hmmm...even after a client restart?

DrakoAlcarus commented 8 years ago

Yep. Twice.

On Sat, Mar 5, 2016 at 5:44 PM, OreCruncher notifications@github.com wrote:

Hmmm...even after a client restart?

— Reply to this email directly or view it on GitHub https://github.com/OreCruncher/BetterRain/issues/103#issuecomment-192779525 .

OreCruncher commented 8 years ago

Check the client log to see if an error is being reported.

DrakoAlcarus commented 8 years ago

New issue while being underground near water (that is pouring in from the bottom of a birch forest lake):

java.lang.NullPointerException: Unexpected error
    at org.blockartistry.mod.DynSurround.client.sound.SoundManager.getNormalizedVolume(SoundManager.java:203)
    at net.minecraft.client.audio.SoundManager.func_148594_a(SoundManager.java)
    at net.minecraft.client.audio.SoundManager.func_148605_d(SoundManager.java:203)
    at net.minecraft.client.audio.SoundHandler.func_73660_a(SourceFile:179)
    at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:2013)
    at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:973)
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:898)
    at net.minecraft.client.main.Main.main(SourceFile:148)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
OreCruncher commented 8 years ago

It's the same exception as reported above, though in this particular case it is the latest version of Dynamic Surroundings with the volume hook. Any other exceptions reported during startup? Wondering if there is anything related to blocked sound initialization. Could be something like a Json exception.

DrakoAlcarus commented 8 years ago

I did find something:

[05:52:57] [Client thread/ERROR] [dsurround]: Unable to process biome config file oldmatmos.json
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: java.lang.NullPointerException
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at org.blockartistry.mod.DynSurround.data.BiomeRegistry.process(BiomeRegistry.java:344)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at org.blockartistry.mod.DynSurround.data.BiomeRegistry.processConfig(BiomeRegistry.java:292)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at org.blockartistry.mod.DynSurround.data.BiomeRegistry.initialize(BiomeRegistry.java:187)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at org.blockartistry.mod.DynSurround.proxy.Proxy.postInit(Proxy.java:60)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at org.blockartistry.mod.DynSurround.proxy.ProxyClient.postInit(ProxyClient.java:69)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at org.blockartistry.mod.DynSurround.Module.postInit(Module.java:106)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at java.lang.reflect.Method.invoke(Method.java:483)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at java.lang.reflect.Method.invoke(Method.java:483)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at com.google.common.eventbus.EventBus.post(EventBus.java:275)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at java.lang.reflect.Method.invoke(Method.java:483)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at com.google.common.eventbus.EventBus.post(EventBus.java:275)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at cpw.mods.fml.common.Loader.initializeMods(Loader.java:742)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:552)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:878)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at net.minecraft.client.main.Main.main(SourceFile:148)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at java.lang.reflect.Method.invoke(Method.java:483)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
[05:52:57] [Client thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]:     at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[05:52:57] [Client thread/INFO] [dsurround]: *** DIMENSION REGISTRY (delay init) ***
OreCruncher commented 8 years ago

Anything above that?

EDIT: Also, can you post your oldmatmos.json file?

OreCruncher commented 8 years ago

Also, I have a test binary that has addition trace and exception catching in an attempt to figure out this NPE. So far this is the only report of it occuring so it may be some combination of things on your system. If you could install this version and let me know the results. It should not crash, but if there is an issue a line with the token "getNormalizedVolume" would be in the client log with some additional information.

OreCruncher commented 8 years ago

@DrakoAlcarus I was wondering if you had a chance to use the test JAR in an attempt to identify the issue. My plan is to finish up bug fixing and what not before I release. Thanks!

DrakoAlcarus commented 8 years ago

Here is oldmatmos:

{
    "entries":[
        {
            "biomeName":"(?i)Underground",
            "sounds":[
                {
                    "sound":"matmosclassic:caverumble",
                    "soundType":"periodic",
                    "volume":0.25,
                    "repeatDelay":60,
                    "repeatDelayRandom":30
                },
                {
                    "sound":"matmosclassic:caveroar",
                    "volume":0.6,
                    "spot":true,
                    "weight":65
                },
            ]
        }
    ]
}

And no, nothing above it. And now the sounds don't even play since installing your test.jar.

DrakoAlcarus commented 8 years ago

All the sudden, the sounds are playing. Odd... Now I have to wait till' it crashes.

DrakoAlcarus commented 8 years ago

Crash log:

java.lang.NullPointerException: Unexpected error
    at net.minecraft.client.audio.SoundManager.func_148606_a(SoundManager.java:389)
    at net.minecraft.client.audio.SoundManager.func_148605_d(SoundManager.java:204)
    at net.minecraft.client.audio.SoundHandler.func_73660_a(SourceFile:179)
    at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:2013)
    at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:973)
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:898)
    at net.minecraft.client.main.Main.main(SourceFile:148)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Stacktrace:
    at net.minecraft.client.audio.SoundManager.func_148606_a(SoundManager.java:389)
    at net.minecraft.client.audio.SoundManager.func_148605_d(SoundManager.java:204)
    at net.minecraft.client.audio.SoundHandler.func_73660_a(SourceFile:179)
Stacktrace:
    at net.minecraft.client.multiplayer.WorldClient.func_72914_a(WorldClient.java:373)
    at net.minecraft.client.Minecraft.func_71396_d(Minecraft.java:2444)
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:927)
    at net.minecraft.client.main.Main.main(SourceFile:148)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

I split to original up and put the important parts together.

OreCruncher commented 8 years ago

Remove the comma after the } for the last sound entry.

As for the latest call stack I would have expected to see Dynamic Surroundings in it because I hook getNormalizedVolume() (the function func_148606_a in the trace).

DrakoAlcarus commented 8 years ago

Testing it now...

DrakoAlcarus commented 8 years ago

Removing the comma did no jutice:

java.lang.NullPointerException: Unexpected error
    at net.minecraft.client.audio.SoundManager.func_148606_a(SoundManager.java:389)
    at net.minecraft.client.audio.SoundManager.func_148605_d(SoundManager.java:204)
    at net.minecraft.client.audio.SoundHandler.func_73660_a(SourceFile:179)
    at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:2013)
    at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:973)
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:898)
    at net.minecraft.client.main.Main.main(SourceFile:148)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Stacktrace:
    at net.minecraft.client.audio.SoundManager.func_148606_a(SoundManager.java:389)
    at net.minecraft.client.audio.SoundManager.func_148605_d(SoundManager.java:204)
    at net.minecraft.client.audio.SoundHandler.func_73660_a(SourceFile:179)

also, I need to set the height in which the sounds play at y of 48 and below, and when leaving the boundary, I don't want the sound to cut off. Instead, it should finish that current sound it was playing with a fade away.

OreCruncher commented 8 years ago

The comma in the json would have nothing to do with the null pointer. It would, however, could have caused the log trace you posted further up and could have caused the blocked sounds to not work properly.

[05:52:57] [Client thread/ERROR] [dsurround]: Unable to process biome config file oldmatmos.json

The NPE though it strange because the latest BETAs should have a different trace because the mod injects code into the method.

As for the Y of 48 are you referring to the Y value for transitioning from Underground to normal Overworld "surface" biomes?

DrakoAlcarus commented 8 years ago

Well, I ended up installing matmos for the second time... it was everything I wanted. Strong cave rumble, lava sounds, lots of birds, water drips, and some other sounds that stay true to tekkit classic

OreCruncher commented 8 years ago

Update with PERIODIC sound type posted to CurseForge. Matmos behavior still being weighed.