geforkt von Mirrors/Paper
dc684c60d1
The new behavior of disconnect to block the current thread until the disconnect succeeded is better than throwing it off to happen at some point
57 Zeilen
2.8 KiB
Diff
57 Zeilen
2.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Fri, 9 Dec 2022 01:47:23 -0800
|
|
Subject: [PATCH] fix Instruments
|
|
|
|
properly handle Player#playNote
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
index 90ce5c386d46f10e14df67953938168c29d24c6a..6503bce4c0281619489adc01fa1da0c59b433875 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -768,7 +768,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
|
Sound instrumentSound = instrument.getSound();
|
|
if (instrumentSound == null) return;
|
|
|
|
- float pitch = note.getPitch();
|
|
+ // Paper start - use correct pitch (modeled off of NoteBlock)
|
|
+ final net.minecraft.world.level.block.state.properties.NoteBlockInstrument noteBlockInstrument = CraftBlockData.toNMS(instrument, net.minecraft.world.level.block.state.properties.NoteBlockInstrument.class);
|
|
+ final float pitch = noteBlockInstrument.isTunable() ? note.getPitch() : 1.0f;
|
|
+ // Paper end
|
|
this.getHandle().connection.send(new ClientboundSoundPacket(CraftSound.bukkitToMinecraftHolder(instrumentSound), net.minecraft.sounds.SoundSource.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, pitch, this.getHandle().getRandom().nextLong()));
|
|
}
|
|
|
|
diff --git a/src/test/java/io/papermc/paper/block/InstrumentSoundTest.java b/src/test/java/io/papermc/paper/block/InstrumentSoundTest.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..28fc01045675247e75438bdc039fb8a90493419f
|
|
--- /dev/null
|
|
+++ b/src/test/java/io/papermc/paper/block/InstrumentSoundTest.java
|
|
@@ -0,0 +1,27 @@
|
|
+package io.papermc.paper.block;
|
|
+
|
|
+import java.util.Arrays;
|
|
+import java.util.stream.Stream;
|
|
+import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
|
|
+import org.bukkit.Instrument;
|
|
+import org.bukkit.craftbukkit.CraftSound;
|
|
+import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
|
+import org.bukkit.support.AbstractTestingBase;
|
|
+import org.junit.jupiter.params.ParameterizedTest;
|
|
+import org.junit.jupiter.params.provider.MethodSource;
|
|
+
|
|
+import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
+
|
|
+class InstrumentSoundTest extends AbstractTestingBase {
|
|
+
|
|
+ static Stream<Instrument> bukkitInstruments() {
|
|
+ return Arrays.stream(Instrument.values()).filter(i -> i.getSound() != null);
|
|
+ }
|
|
+
|
|
+ @ParameterizedTest
|
|
+ @MethodSource("bukkitInstruments")
|
|
+ void checkInstrumentSound(final Instrument bukkit) {
|
|
+ final NoteBlockInstrument nms = CraftBlockData.toNMS(bukkit, NoteBlockInstrument.class);
|
|
+ assertEquals(nms.getSoundEvent(), CraftSound.bukkitToMinecraftHolder(bukkit.getSound()));
|
|
+ }
|
|
+}
|