package us.myles.ViaVersion.protocols.protocol1_9to1_9_1; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.protocol.Protocol; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.protocols.protocol1_9to1_8.ClientboundPackets1_9; import us.myles.ViaVersion.protocols.protocol1_9to1_8.ServerboundPackets1_9; public class Protocol1_9To1_9_1 extends Protocol<ClientboundPackets1_9, ClientboundPackets1_9, ServerboundPackets1_9, ServerboundPackets1_9> { public Protocol1_9To1_9_1() { super(ClientboundPackets1_9.class, ClientboundPackets1_9.class, ServerboundPackets1_9.class, ServerboundPackets1_9.class); } @Override protected void registerPackets() { // Currently supports 1.9.1 and 1.9.2 registerOutgoing(ClientboundPackets1_9.JOIN_GAME, new PacketRemapper() { @Override public void registerMap() { map(Type.INT); // 0 - Player ID map(Type.UNSIGNED_BYTE); // 1 - Player Gamemode // 1.9.1 PRE 2 Changed this map(Type.INT, Type.BYTE); // 2 - Player Dimension map(Type.UNSIGNED_BYTE); // 3 - World Difficulty map(Type.UNSIGNED_BYTE); // 4 - Max Players (Tab) map(Type.STRING); // 5 - Level Type map(Type.BOOLEAN); // 6 - Reduced Debug info } }); registerOutgoing(ClientboundPackets1_9.SOUND, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); // 0 - Sound ID handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { int sound = wrapper.get(Type.VAR_INT, 0); if (sound == 415) // Stop the Elytra sound for 1.9 (It's introduced in 1.9.2) wrapper.cancel(); else if (sound >= 416) // Act like the Elytra sound never existed wrapper.set(Type.VAR_INT, 0, sound - 1); } }); } }); } }