Skip to content

Commit 191dd24

Browse files
Add missing sound name handlers for biomes (#1098)
1 parent 6ad05d8 commit 191dd24

File tree

5 files changed

+56
-12
lines changed

5 files changed

+56
-12
lines changed

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

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

2020
import com.viaversion.nbt.tag.CompoundTag;
21-
import com.viaversion.nbt.tag.StringTag;
2221
import com.viaversion.viabackwards.api.BackwardsProtocol;
22+
import com.viaversion.viaversion.api.connection.UserConnection;
2323
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
2424
import com.viaversion.viaversion.rewriter.RegistryDataRewriter;
25+
import com.viaversion.viaversion.util.Key;
2526

2627
public class BackwardsRegistryRewriter extends RegistryDataRewriter {
2728

@@ -32,20 +33,59 @@ public BackwardsRegistryRewriter(final BackwardsProtocol<?, ?, ?, ?> protocol) {
3233
this.protocol = protocol;
3334
}
3435

36+
@Override
37+
public RegistryEntry[] handle(final UserConnection connection, final String key, final RegistryEntry[] entries) {
38+
if (Key.stripMinecraftNamespace(key).equals("worldgen/biome")) {
39+
for (final RegistryEntry entry : entries) {
40+
final CompoundTag biome = (CompoundTag) entry.tag();
41+
if (biome == null) {
42+
continue;
43+
}
44+
45+
final CompoundTag effects = biome.getCompoundTag("effects");
46+
updateBiomeEffects(effects);
47+
}
48+
}
49+
return super.handle(connection, key, entries);
50+
}
51+
3552
@Override
3653
public void updateJukeboxSongs(final RegistryEntry[] entries) {
3754
for (final RegistryEntry entry : entries) {
3855
if (entry.tag() == null) {
3956
continue;
4057
}
4158

42-
final StringTag soundEvent = ((CompoundTag) entry.tag()).getStringTag("sound_event");
43-
if (soundEvent != null) {
44-
final String mappedNamedSound = protocol.getMappingData().getMappedNamedSound(soundEvent.getValue());
45-
if (mappedNamedSound != null) {
46-
soundEvent.setValue(mappedNamedSound);
47-
}
48-
}
59+
updateSound((CompoundTag) entry.tag(), "sound_event");
60+
}
61+
}
62+
63+
private void updateBiomeEffects(final CompoundTag effects) {
64+
updateSound(effects.getCompoundTag("mood_sound"), "sound");
65+
updateSound(effects.getCompoundTag("additions_sound"), "sound");
66+
updateSound(effects.getCompoundTag("music"), "sound");
67+
updateSound(effects, "ambient_sound");
68+
}
69+
70+
private void updateSound(final CompoundTag tag, final String name) {
71+
if (tag == null) {
72+
return;
73+
}
74+
75+
final String sound = tag.getString(name);
76+
if (sound == null) {
77+
return;
78+
}
79+
80+
final String mappedSound = protocol.getMappingData().getMappedNamedSound(sound);
81+
if (mappedSound == null) {
82+
return;
83+
}
84+
85+
if (mappedSound.isEmpty()) {
86+
tag.putString(name, "minecraft:intentionally_empty");
87+
} else {
88+
tag.putString(name, mappedSound);
4989
}
5090
}
5191
}

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_2to1_21/rewriter/EntityPacketRewriter1_21_2.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.viaversion.nbt.tag.ListTag;
2424
import com.viaversion.nbt.tag.Tag;
2525
import com.viaversion.viabackwards.ViaBackwards;
26+
import com.viaversion.viabackwards.api.rewriters.BackwardsRegistryRewriter;
2627
import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
2728
import com.viaversion.viabackwards.protocol.v1_21_2to1_21.Protocol1_21_2To1_21;
2829
import com.viaversion.viabackwards.protocol.v1_21_2to1_21.storage.PlayerStorage;
@@ -102,7 +103,7 @@ public void registerPackets() {
102103
}
103104
});
104105

105-
final RegistryDataRewriter registryDataRewriter = new RegistryDataRewriter(protocol);
106+
final RegistryDataRewriter registryDataRewriter = new BackwardsRegistryRewriter(protocol);
106107
registryDataRewriter.addEnchantmentEffectRewriter("change_item_damage", tag -> tag.putString("type", "damage_item"));
107108
protocol.registerClientbound(ClientboundConfigurationPackets1_21.REGISTRY_DATA, wrapper -> {
108109
final String registryKey = Key.stripMinecraftNamespace(wrapper.passthrough(Types.STRING));

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_4to1_21_2/rewriter/EntityPacketRewriter1_21_4.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import com.viaversion.nbt.tag.CompoundTag;
2121
import com.viaversion.nbt.tag.ListTag;
22+
import com.viaversion.viabackwards.api.rewriters.BackwardsRegistryRewriter;
2223
import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
2324
import com.viaversion.viabackwards.protocol.v1_21_4to1_21_2.Protocol1_21_4To1_21_2;
2425
import com.viaversion.viaversion.api.connection.UserConnection;
@@ -48,7 +49,7 @@ public void registerPackets() {
4849
registerSetEntityData(ClientboundPackets1_21_2.SET_ENTITY_DATA);
4950
registerRemoveEntities(ClientboundPackets1_21_2.REMOVE_ENTITIES);
5051

51-
final RegistryDataRewriter registryDataRewriter = new RegistryDataRewriter(protocol) {
52+
final RegistryDataRewriter registryDataRewriter = new BackwardsRegistryRewriter(protocol) {
5253
@Override
5354
public RegistryEntry[] handle(final UserConnection connection, final String key, final RegistryEntry[] entries) {
5455
final String strippedKey = Key.stripMinecraftNamespace(key);

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_5to1_21_4/rewriter/EntityPacketRewriter1_21_5.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.viaversion.nbt.tag.CompoundTag;
2121
import com.viaversion.nbt.tag.ListTag;
2222
import com.viaversion.nbt.tag.StringTag;
23+
import com.viaversion.viabackwards.api.rewriters.BackwardsRegistryRewriter;
2324
import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
2425
import com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.Protocol1_21_5To1_21_4;
2526
import com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.storage.HashedItemConverterStorage;
@@ -111,7 +112,7 @@ public void registerPackets() {
111112
}
112113
});
113114

114-
final RegistryDataRewriter registryDataRewriter = new RegistryDataRewriter(protocol) {
115+
final RegistryDataRewriter registryDataRewriter = new BackwardsRegistryRewriter(protocol) {
115116
@Override
116117
public RegistryEntry[] handle(final UserConnection connection, final String key, final RegistryEntry[] entries) {
117118
final boolean trimPatternRegistry = key.equals("trim_pattern");

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21to1_20_5/rewriter/EntityPacketRewriter1_21.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import com.viaversion.nbt.tag.CompoundTag;
2121
import com.viaversion.nbt.tag.Tag;
22+
import com.viaversion.viabackwards.api.rewriters.BackwardsRegistryRewriter;
2223
import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
2324
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.Protocol1_21To1_20_5;
2425
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.storage.EnchantmentsPaintingsStorage;
@@ -65,7 +66,7 @@ public void registerPackets() {
6566
registerSetEntityData(ClientboundPackets1_21.SET_ENTITY_DATA);
6667
registerRemoveEntities(ClientboundPackets1_21.REMOVE_ENTITIES);
6768

68-
final RegistryDataRewriter registryDataRewriter = new RegistryDataRewriter(protocol);
69+
final RegistryDataRewriter registryDataRewriter = new BackwardsRegistryRewriter(protocol);
6970
protocol.registerClientbound(ClientboundConfigurationPackets1_21.REGISTRY_DATA, wrapper -> {
7071
final String key = Key.stripMinecraftNamespace(wrapper.passthrough(Types.STRING));
7172
final RegistryEntry[] entries = wrapper.passthrough(Types.REGISTRY_ENTRY_ARRAY);

0 commit comments

Comments
 (0)