package us.myles.ViaVersion.api.rewriters; import us.myles.ViaVersion.api.protocol.ClientboundPacketType; import us.myles.ViaVersion.api.protocol.Protocol; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; public class SoundRewriter { protected final Protocol protocol; protected final IdRewriteFunction idRewriter; public SoundRewriter(Protocol protocol) { this.protocol = protocol; this.idRewriter = id -> protocol.getMappingData().getSoundMappings().getNewId(id); } public SoundRewriter(Protocol protocol, IdRewriteFunction idRewriter) { this.protocol = protocol; this.idRewriter = idRewriter; } // The same for entity sound public void registerSound(ClientboundPacketType packetType) { protocol.registerOutgoing(packetType, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); // Sound Id handler(wrapper -> { int soundId = wrapper.get(Type.VAR_INT, 0); int mappedId = idRewriter.rewrite(soundId); if (mappedId == -1) { wrapper.cancel(); } else if (soundId != mappedId) { wrapper.set(Type.VAR_INT, 0, mappedId); } }); } }); } }