OreCruncher / DynamicSurroundings

Dynamic Surroundings mod for Minecraft 1.10.x+
MIT License
120 stars 35 forks source link

MC Eternal - Ender IO - Dark Steel Armor - Sound Looping\Distorted #580

Open endorphinrush opened 4 years ago

endorphinrush commented 4 years ago

Mod Version:

1.12.2-3.6.0.2

Forge Version:

14.23.5.2847

Description:

While playing MC Eternal I found that adding the "Padding" modifier to EnderIO's Dark Steel armor caused sounds in the game to loop and become distorted. This can be recreated by wearing the dark steel armor with the modifer applied and walking up to a water fall. The sound will be distorted and after walking away many of the normal sounds like footsteps will not play at all. Additionally while wearing the armor many normal sounds such as machine sounds will loop and become louder and louder. Restarting the game will clear the issue but only for a short time.

endorphinrush commented 4 years ago

It should also be noted that the Padding modifier is supposed to muffle sounds so in hindsight makes sense that it may not mesh well.

From the EnderIO Wiki:

Dark Steel Upgrade "Padding"

Crafted with a Blank Upgrade and a piece of Wool Upgrade for Dark Steel Items Muffles nearby sound Can be applied to: Dark, Ender, and Stellar Helmets

OreCruncher commented 4 years ago

Yeah - sound modifiers like this are hard to deal with. With the way Forge integrates with the sound system, a mod can intercept a sound play request, cancel it, and replace it with a different sound. When this happens to a DS initiated sound, DS thinks that the sound finished playing or failed submission. If this is a looping sound effect DS could think it finished playing and then resubmit the sound. Distortion comes in because there is a limit to the number of sounds MC sound engine can handle. When this list gets full sounds can get choppy.

endorphinrush commented 4 years ago

Thanks @OreCruncher, I was playing with this a bit further and I believe this is related to a crash I experience while going to "The Midnight." To reproduce this:

  1. Start a new game and equip EnderIO's Dark Helmet with the "Padding" modifier equipped.
  2. Set time to night.
  3. Find one of the Midnight portals and go through the portal.
  4. Within 30 seconds the game will freeze.

Here is one of the crash logs that would actually upload. Seems some of my others are too big to upload. https://paste.ee/p/BesGM

Thanks for your work on this mod. It brings a whole new level of detail to modded minecraft!

edit: I add this mainly for documentation if someone else comes across this. In hindsight it makes sense that a sound modifier would cause unexpected results with a mod that specifically alters the sounds in the game , but I couldn't find anything related to my experience elsewhere.

OreCruncher commented 4 years ago
Caused by: java.lang.IndexOutOfBoundsException: readerIndex(4) + length(1) exceeds writerIndex(4): UnpooledSlicedByteBuf(ridx: 4, widx: 4, cap: 4/4, unwrapped: PooledUnsafeDirectByteBuf(ridx: 0, widx: 5, cap: 5))
    at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1396)
    at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:687)
    at com.mushroom.midnight.common.entity.RiftBridge.handleState(RiftBridge.java:150)
    at com.mushroom.midnight.common.network.MessageBridgeState$Handler.lambda$onMessage$0(MessageBridgeState.java:47)
    at com.mushroom.midnight.client.ClientProxy.lambda$handleMessage$1(ClientProxy.java:39)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at net.minecraft.util.Util.runTask(SourceFile:529)

I think the Midnight Portal mod has a problem handling some IO packets.