mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 03:48:01 +01:00
da9d110d5b
This patch does not appear to be doing anything useful, and may hide errors. Currently, the save logic does not run through this path either so it did not do anything. Additionally, properly implement support for handling RegionFileSizeException in Moonrise.
84 lines
3.7 KiB
Diff
84 lines
3.7 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 76d85db873d223aa3f8b310e83eff880d451ff8f..9e7c7e016211622e35acda872477acb1ea62ca9f 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -775,7 +775,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..cd718ed01ba5d448cdf0a2b6a39dc7ef2337f70d
|
|
--- /dev/null
|
|
+++ b/src/test/java/io/papermc/paper/block/InstrumentSoundTest.java
|
|
@@ -0,0 +1,28 @@
|
|
+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.environment.AllFeatures;
|
|
+import org.junit.jupiter.params.ParameterizedTest;
|
|
+import org.junit.jupiter.params.provider.MethodSource;
|
|
+
|
|
+import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
+
|
|
+@AllFeatures
|
|
+class InstrumentSoundTest {
|
|
+
|
|
+ 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()));
|
|
+ }
|
|
+}
|
|
diff --git a/src/test/java/org/bukkit/InstrumentTest.java b/src/test/java/org/bukkit/InstrumentTest.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..5da6b5c996c9a4077f309e923731e3f148e91c19
|
|
--- /dev/null
|
|
+++ b/src/test/java/org/bukkit/InstrumentTest.java
|
|
@@ -0,0 +1,20 @@
|
|
+package org.bukkit;
|
|
+
|
|
+import org.bukkit.support.environment.AllFeatures;
|
|
+import org.junit.jupiter.api.Test;
|
|
+
|
|
+import static org.bukkit.support.MatcherAssert.assertThat;
|
|
+import static org.hamcrest.CoreMatchers.is;
|
|
+
|
|
+@AllFeatures
|
|
+public class InstrumentTest { // Paper - moved to internals as this test now access the sound registry.
|
|
+
|
|
+ @Test
|
|
+ public void getByType() {
|
|
+ for (Instrument instrument : Instrument.values()) {
|
|
+ // Paper - byte magic values are still used
|
|
+
|
|
+ assertThat(Instrument.getByType(instrument.getType()), is(instrument));
|
|
+ }
|
|
+ }
|
|
+}
|