diff --git a/src/main/java/us/myles/ViaVersion/PacketUtil.java b/src/main/java/us/myles/ViaVersion/PacketUtil.java index f7c0e89d3..cacd6929a 100644 --- a/src/main/java/us/myles/ViaVersion/PacketUtil.java +++ b/src/main/java/us/myles/ViaVersion/PacketUtil.java @@ -184,6 +184,13 @@ public class PacketUtil { } } + public static void writeVarIntArray(List integers, ByteBuf output) { + writeVarInt(integers.size(),output); + for (Integer i : integers){ + writeVarInt(i,output); + } + } + public static int readVarShort(ByteBuf buf) { int low = buf.readUnsignedShort(); int high = 0; diff --git a/src/main/java/us/myles/ViaVersion/transformers/IncomingTransformer.java b/src/main/java/us/myles/ViaVersion/transformers/IncomingTransformer.java index 7cfb5836a..5ef68334f 100644 --- a/src/main/java/us/myles/ViaVersion/transformers/IncomingTransformer.java +++ b/src/main/java/us/myles/ViaVersion/transformers/IncomingTransformer.java @@ -36,7 +36,7 @@ public class IncomingTransformer { // if (packet != PacketType.PLAY_PLAYER_POSITION_LOOK_REQUEST && packet != PacketType.PLAY_KEEP_ALIVE_REQUEST && packet != PacketType.PLAY_PLAYER_POSITION_REQUEST && packet != PacketType.PLAY_PLAYER_LOOK_REQUEST) { // System.out.println("Packet Type: " + packet + " New ID: " + packetID + " Original: " + original); // } - if (packet == PacketType.PLAY_TP_CONFIRM) { + if (packet == PacketType.PLAY_TP_CONFIRM || packet == PacketType.PLAY_VEHICLE_MOVE_REQUEST) { //TODO handle client-sided horse riding throw new CancelException(); } PacketUtil.writeVarInt(packetID, output); diff --git a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java index 06284f2f3..95d3dfc83 100644 --- a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java +++ b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java @@ -25,8 +25,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.*; -import static us.myles.ViaVersion.PacketUtil.readString; -import static us.myles.ViaVersion.PacketUtil.writeString; +import static us.myles.ViaVersion.PacketUtil.*; public class OutgoingTransformer { private static Gson gson = new Gson(); @@ -75,10 +74,18 @@ public class OutgoingTransformer { output.writeBytes(input); } if (packet == PacketType.PLAY_ATTACH_ENTITY) { - int id = input.readInt(); - output.writeInt(id); - int target = input.readInt(); - output.writeInt(target); + int passenger = input.readInt(); + int vehicle = input.readInt(); + boolean lead = input.readBoolean(); + if (!lead){ + output.clear(); + writeVarInt(PacketType.PLAY_SET_PASSENGERS.getNewPacketID(),output); + writeVarInt(vehicle,output); + writeVarIntArray(Collections.singletonList(passenger),output); + return; + } + output.writeInt(passenger); + output.writeInt(vehicle); return; } if (packet == PacketType.PLAY_DISCONNECT){