86 Zeilen
3.5 KiB
Diff
86 Zeilen
3.5 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 05fbdba6bc87e5c7f192a061a8ea6cf12b19a216..0e65d674a73d7c31ba3c6d504bd724ccb5068264 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -767,62 +767,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
|
public void playNote(Location loc, Instrument instrument, Note note) {
|
|
if (this.getHandle().connection == null) return;
|
|
|
|
- String instrumentName = null;
|
|
- switch (instrument.ordinal()) {
|
|
- case 0:
|
|
- instrumentName = "harp";
|
|
- break;
|
|
- case 1:
|
|
- instrumentName = "basedrum";
|
|
- break;
|
|
- case 2:
|
|
- instrumentName = "snare";
|
|
- break;
|
|
- case 3:
|
|
- instrumentName = "hat";
|
|
- break;
|
|
- case 4:
|
|
- instrumentName = "bass";
|
|
- break;
|
|
- case 5:
|
|
- instrumentName = "flute";
|
|
- break;
|
|
- case 6:
|
|
- instrumentName = "bell";
|
|
- break;
|
|
- case 7:
|
|
- instrumentName = "guitar";
|
|
- break;
|
|
- case 8:
|
|
- instrumentName = "chime";
|
|
- break;
|
|
- case 9:
|
|
- instrumentName = "xylophone";
|
|
- break;
|
|
- case 10:
|
|
- instrumentName = "iron_xylophone";
|
|
- break;
|
|
- case 11:
|
|
- instrumentName = "cow_bell";
|
|
- break;
|
|
- case 12:
|
|
- instrumentName = "didgeridoo";
|
|
- break;
|
|
- case 13:
|
|
- instrumentName = "bit";
|
|
- break;
|
|
- case 14:
|
|
- instrumentName = "banjo";
|
|
- break;
|
|
- case 15:
|
|
- instrumentName = "pling";
|
|
- break;
|
|
- case 16:
|
|
- instrumentName = "xylophone";
|
|
- break;
|
|
+ // Paper start - fix all this (modeled off of NoteBlock)
|
|
+ net.minecraft.world.level.block.state.properties.NoteBlockInstrument nms = CraftBlockData.toNMS(instrument, net.minecraft.world.level.block.state.properties.NoteBlockInstrument.class);
|
|
+ float f;
|
|
+ if (nms.isTunable()) {
|
|
+ f = (float) Math.pow(2.0D, (note.getId() - 12.0D) / 12.0D);
|
|
+ } else {
|
|
+ f = 1.0f;
|
|
}
|
|
- float f = (float) Math.pow(2.0D, (note.getId() - 12.0D) / 12.0D);
|
|
- this.getHandle().connection.send(new ClientboundSoundPacket(BuiltInRegistries.SOUND_EVENT.wrapAsHolder(CraftSound.getSoundEffect("block.note_block." + instrumentName)), net.minecraft.sounds.SoundSource.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, f, this.getHandle().getRandom().nextLong()));
|
|
+ if (!nms.hasCustomSound()) {
|
|
+ this.getHandle().connection.send(new ClientboundSoundPacket(nms.getSoundEvent(), net.minecraft.sounds.SoundSource.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, f, this.getHandle().getRandom().nextLong()));
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
@Override
|