Clamp speaker volume again

Looks like this was removed in b048b6666d.
This commit is contained in:
Jonathan Coates 2023-01-01 13:59:58 +00:00
parent 0ad12eeab6
commit 4078a2dcba
No known key found for this signature in database
GPG Key ID: B9E431FF07C98D06
2 changed files with 10 additions and 4 deletions

View File

@ -8,7 +8,6 @@
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.lua.LuaTable;
import dan200.computercraft.shared.util.PauseAwareTimer;
import net.minecraft.util.math.MathHelper;
import javax.annotation.Nonnull;
import java.nio.ByteBuffer;
@ -16,6 +15,7 @@
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.
@ -87,7 +87,7 @@ synchronized boolean pushBuffer( LuaTable<?, ?> table, int size, @Nonnull Option
buffer.flip();
pendingAudio = buffer;
pendingVolume = MathHelper.clamp( volume.orElse( (double) pendingVolume ).floatValue(), 0.0f, 3.0f );
pendingVolume = (float) clampVolume( volume.orElse( (double) pendingVolume ) );
return true;
}

View File

@ -25,6 +25,7 @@
import net.minecraft.util.ResourceLocationException;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.world.World;
@ -222,7 +223,7 @@ public String getType()
@LuaFunction
public final boolean playNote( ILuaContext context, String instrumentA, Optional<Double> volumeA, Optional<Double> pitchA ) throws LuaException
{
float volume = (float) checkFinite( 1, volumeA.orElse( 1.0 ) );
float volume = (float) clampVolume( checkFinite( 1, volumeA.orElse( 1.0 ) ) );
float pitch = (float) checkFinite( 2, pitchA.orElse( 1.0 ) );
NoteBlockInstrument instrument = null;
@ -271,7 +272,7 @@ public final boolean playNote( ILuaContext context, String instrumentA, Optional
@LuaFunction
public final boolean playSound( ILuaContext context, String name, Optional<Double> volumeA, Optional<Double> pitchA ) throws LuaException
{
float volume = (float) checkFinite( 1, volumeA.orElse( 1.0 ) );
float volume = (float) clampVolume( checkFinite( 1, volumeA.orElse( 1.0 ) ) );
float pitch = (float) checkFinite( 2, pitchA.orElse( 1.0 ) );
ResourceLocation identifier;
@ -396,6 +397,11 @@ public void detach( @Nonnull IComputerAccess computer )
}
}
static double clampVolume( double volume )
{
return MathHelper.clamp( volume, 0, 3 );
}
private static final class PendingSound
{
final ResourceLocation location;