Skip to content

Commit 39e9d6d

Browse files
committed
Use new SoundEvent type
1 parent 445d798 commit 39e9d6d

File tree

2 files changed

+42
-35
lines changed

2 files changed

+42
-35
lines changed

common/src/main/java/com/viaversion/viabackwards/api/rewriters/SoundRewriter.java

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818
package com.viaversion.viabackwards.api.rewriters;
1919

2020
import com.viaversion.viabackwards.api.BackwardsProtocol;
21+
import com.viaversion.viaversion.api.minecraft.Holder;
22+
import com.viaversion.viaversion.api.minecraft.SoundEvent;
2123
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
24+
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
2225
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
2326
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
2427
import com.viaversion.viaversion.api.type.Type;
@@ -27,12 +30,12 @@ public class SoundRewriter<C extends ClientboundPacketType> extends com.viaversi
2730

2831
private final BackwardsProtocol<C, ?, ?, ?> protocol;
2932

30-
public SoundRewriter(BackwardsProtocol<C, ?, ?, ?> protocol) {
33+
public SoundRewriter(final BackwardsProtocol<C, ?, ?, ?> protocol) {
3134
super(protocol);
3235
this.protocol = protocol;
3336
}
3437

35-
public void registerNamedSound(C packetType) {
38+
public void registerNamedSound(final C packetType) {
3639
protocol.registerClientbound(packetType, new PacketHandlers() {
3740
@Override
3841
public void register() {
@@ -42,7 +45,7 @@ public void register() {
4245
});
4346
}
4447

45-
public void registerStopSound(C packetType) {
48+
public void registerStopSound(final C packetType) {
4649
protocol.registerClientbound(packetType, new PacketHandlers() {
4750
@Override
4851
public void register() {
@@ -53,8 +56,8 @@ public void register() {
5356

5457
public PacketHandler getNamedSoundHandler() {
5558
return wrapper -> {
56-
String soundId = wrapper.get(Type.STRING, 0);
57-
String mappedId = protocol.getMappingData().getMappedNamedSound(soundId);
59+
final String soundId = wrapper.get(Type.STRING, 0);
60+
final String mappedId = protocol.getMappingData().getMappedNamedSound(soundId);
5861
if (mappedId == null) {
5962
return;
6063
}
@@ -69,15 +72,15 @@ public PacketHandler getNamedSoundHandler() {
6972

7073
public PacketHandler getStopSoundHandler() {
7174
return wrapper -> {
72-
byte flags = wrapper.passthrough(Type.BYTE);
75+
final byte flags = wrapper.passthrough(Type.BYTE);
7376
if ((flags & 0x02) == 0) return; // No sound specified
7477

7578
if ((flags & 0x01) != 0) {
7679
wrapper.passthrough(Type.VAR_INT); // Source
7780
}
7881

79-
String soundId = wrapper.read(Type.STRING);
80-
String mappedId = protocol.getMappingData().getMappedNamedSound(soundId);
82+
final String soundId = wrapper.read(Type.STRING);
83+
final String mappedId = protocol.getMappingData().getMappedNamedSound(soundId);
8184
if (mappedId == null) {
8285
// No mapping found
8386
wrapper.write(Type.STRING, soundId);
@@ -94,38 +97,41 @@ public PacketHandler getStopSoundHandler() {
9497
}
9598

9699
@Override
97-
public void register1_19_3Sound(C packetType) {
100+
public void register1_19_3Sound(final C packetType) {
98101
protocol.registerClientbound(packetType, get1_19_3SoundHandler());
99102
}
100103

101104
public PacketHandler get1_19_3SoundHandler() {
102105
return wrapper -> {
103-
final int soundId = wrapper.read(Type.VAR_INT);
104-
if (soundId != 0) {
105-
final int mappedId = idRewriter.rewrite(soundId - 1); // Normalize the id
106-
if (mappedId == -1) {
107-
wrapper.cancel();
108-
return;
109-
}
110-
111-
wrapper.write(Type.VAR_INT, mappedId + 1);
106+
Holder<SoundEvent> soundEventHolder = wrapper.read(Type.SOUND_EVENT);
107+
if (soundEventHolder.isDirect()) {
108+
wrapper.write(Type.SOUND_EVENT, rewriteSoundEvent(wrapper, soundEventHolder));
112109
return;
113110
}
114111

115-
// Is followed by the resource loation
116-
wrapper.write(Type.VAR_INT, 0);
117-
118-
String soundIdentifier = wrapper.read(Type.STRING);
119-
final String mappedIdentifier = protocol.getMappingData().getMappedNamedSound(soundIdentifier);
120-
if (mappedIdentifier != null) {
121-
if (mappedIdentifier.isEmpty()) {
122-
wrapper.cancel();
123-
return;
124-
}
112+
final int mappedId = idRewriter.rewrite(soundEventHolder.id());
113+
if (mappedId == -1) {
114+
wrapper.cancel();
115+
return;
116+
}
125117

126-
soundIdentifier = mappedIdentifier;
118+
if (mappedId != soundEventHolder.id()) {
119+
soundEventHolder = new Holder<>(mappedId);
127120
}
128-
wrapper.write(Type.STRING, soundIdentifier);
121+
122+
wrapper.write(Type.SOUND_EVENT, soundEventHolder);
129123
};
130124
}
125+
126+
public Holder<SoundEvent> rewriteSoundEvent(final PacketWrapper wrapper, final Holder<SoundEvent> soundEventHolder) {
127+
final SoundEvent soundEvent = soundEventHolder.value();
128+
final String mappedIdentifier = protocol.getMappingData().getMappedNamedSound(soundEvent.identifier());
129+
if (mappedIdentifier != null) {
130+
if (!mappedIdentifier.isEmpty()) {
131+
return new Holder<>(soundEvent.withIdentifier(mappedIdentifier));
132+
}
133+
wrapper.cancel();
134+
}
135+
return soundEventHolder;
136+
}
131137
}

common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/Protocol1_19_1To1_19_3.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@
3030
import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.Protocol1_19To1_19_1;
3131
import com.viaversion.viaversion.api.Via;
3232
import com.viaversion.viaversion.api.connection.UserConnection;
33+
import com.viaversion.viaversion.api.minecraft.Holder;
3334
import com.viaversion.viaversion.api.minecraft.PlayerMessageSignature;
3435
import com.viaversion.viaversion.api.minecraft.ProfileKey;
3536
import com.viaversion.viaversion.api.minecraft.RegistryType;
37+
import com.viaversion.viaversion.api.minecraft.SoundEvent;
3638
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_3;
3739
import com.viaversion.viaversion.api.minecraft.signature.SignableCommandArgumentsProvider;
3840
import com.viaversion.viaversion.api.minecraft.signature.model.MessageMetadata;
@@ -349,9 +351,9 @@ public void register() {
349351
}
350352

351353
private @Nullable String rewriteSound(final PacketWrapper wrapper) throws Exception {
352-
final int soundId = wrapper.read(Type.VAR_INT) - 1; // Normalize the id
353-
if (soundId != -1) {
354-
final int mappedId = MAPPINGS.getSoundMappings().getNewId(soundId);
354+
final Holder<SoundEvent> holder = wrapper.read(Type.SOUND_EVENT);
355+
if (holder.hasId()) {
356+
final int mappedId = MAPPINGS.getSoundMappings().getNewId(holder.id());
355357
if (mappedId == -1) {
356358
wrapper.cancel();
357359
return null;
@@ -362,8 +364,7 @@ public void register() {
362364
}
363365

364366
// Convert the resource location to the corresponding integer id
365-
final String soundIdentifier = wrapper.read(Type.STRING);
366-
wrapper.read(Type.OPTIONAL_FLOAT); // Fixed range
367+
final String soundIdentifier = holder.value().identifier();
367368
final String mappedIdentifier = MAPPINGS.getMappedNamedSound(soundIdentifier);
368369
if (mappedIdentifier == null) {
369370
return soundIdentifier;

0 commit comments

Comments
 (0)