mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-09 04:09:54 +01:00
9147456fc9
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: ab8ace685 SPIGOT-7236: Bone meal doesn't increase use statistic 7dcb59b8e Avoid switch on material in previous commit Spigot Changes: 19641c75 SPIGOT-7235: World.Spigot#strikeLightningEffect doesn't do anything
86 lines
3.5 KiB
Diff
86 lines
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 d87b6ccc57be06739a0105805735feb1800ada69..99bf1485ddecb5fc88850242e9c32850781c4b36 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
|