1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-12-14 04:00:30 +00:00

Clamp speaker volume again

Looks like this was removed in b048b6666d.
This commit is contained in:
Jonathan Coates 2023-01-01 08:51:07 +00:00
parent aa203802c6
commit 230c7ee904
No known key found for this signature in database
GPG Key ID: B9E431FF07C98D06
2 changed files with 9 additions and 4 deletions

View File

@ -8,7 +8,6 @@ package dan200.computercraft.shared.peripheral.speaker;
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.lua.LuaTable;
import dan200.computercraft.shared.util.PauseAwareTimer;
import net.minecraft.util.Mth;
import javax.annotation.Nullable;
import java.nio.ByteBuffer;
@ -16,6 +15,7 @@ import java.util.Optional;
import java.util.concurrent.TimeUnit;
import static dan200.computercraft.shared.peripheral.speaker.SpeakerPeripheral.SAMPLE_RATE;
import static dan200.computercraft.shared.peripheral.speaker.SpeakerPeripheral.clampVolume;
/**
* Internal state of the DFPWM decoder and the state of playback.
@ -82,7 +82,7 @@ class DfpwmState {
buffer.flip();
pendingAudio = buffer;
pendingVolume = Mth.clamp(volume.orElse((double) pendingVolume).floatValue(), 0.0f, 3.0f);
pendingVolume = (float) clampVolume(volume.orElse((double) pendingVolume));
return true;
}

View File

@ -27,6 +27,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
import javax.annotation.Nullable;
@ -203,7 +204,7 @@ public abstract class SpeakerPeripheral implements IPeripheral {
*/
@LuaFunction
public final boolean playNote(ILuaContext context, String instrumentA, Optional<Double> volumeA, Optional<Double> pitchA) throws LuaException {
var volume = (float) checkFinite(1, volumeA.orElse(1.0));
var volume = (float) clampVolume(checkFinite(1, volumeA.orElse(1.0)));
var pitch = (float) checkFinite(2, pitchA.orElse(1.0));
NoteBlockInstrument instrument = null;
@ -248,7 +249,7 @@ public abstract class SpeakerPeripheral implements IPeripheral {
*/
@LuaFunction
public final boolean playSound(ILuaContext context, String name, Optional<Double> volumeA, Optional<Double> pitchA) throws LuaException {
var volume = (float) checkFinite(1, volumeA.orElse(1.0));
var volume = (float) clampVolume(checkFinite(1, volumeA.orElse(1.0)));
var pitch = (float) checkFinite(2, pitchA.orElse(1.0));
ResourceLocation identifier;
@ -361,6 +362,10 @@ public abstract class SpeakerPeripheral implements IPeripheral {
}
}
static double clampVolume(double volume) {
return Mth.clamp(volume, 0, 3);
}
private record PendingSound<T>(T sound, float volume, float pitch) {
}
}