From 7f69c41bf6a04a71cc9272518b2000d5274bd0c5 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Wed, 17 Jul 2013 23:02:16 +0200 Subject: [PATCH] Don't pass our CaptureInputStream to the "get player identity" function --- .../injector/packet/ReadPacketModifier.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/packet/ReadPacketModifier.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/packet/ReadPacketModifier.java index 0e593397..1be0c28c 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/packet/ReadPacketModifier.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/packet/ReadPacketModifier.java @@ -19,7 +19,6 @@ package com.comphenix.protocol.injector.packet; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; -import java.io.InputStream; import java.lang.reflect.Method; import java.util.Map; @@ -51,7 +50,7 @@ class ReadPacketModifier implements MethodInterceptor { // Whether or not a packet has been cancelled private static Map override = new MapMaker().weakKeys().makeMap(); - + public ReadPacketModifier(int packetID, ProxyPacketInjector packetInjector, ErrorReporter reporter, boolean isReadPacketDataMethod) { this.packetID = packetID; this.packetInjector = packetInjector; @@ -91,15 +90,16 @@ class ReadPacketModifier implements MethodInterceptor { Object overridenObject = override.get(thisObj); Object returnValue = null; + // We need this in order to get the correct player + DataInputStream input = isReadPacketDataMethod ? (DataInputStream) args[0] : null; ByteArrayOutputStream bufferStream = null; // See if we need to buffer the read data if (isReadPacketDataMethod && packetInjector.requireInputBuffers(packetID)) { CaptureInputStream captured = new CaptureInputStream( - (InputStream) args[0], - bufferStream = new ByteArrayOutputStream()); + input, bufferStream = new ByteArrayOutputStream()); - // Stash it back + // Swap it with our custom stream args[0] = new DataInputStream(captured); } @@ -120,9 +120,10 @@ class ReadPacketModifier implements MethodInterceptor { // Is this a readPacketData method? if (isReadPacketDataMethod) { + // Swap back custom stream + args[0] = input; + try { - // We need this in order to get the correct player - DataInputStream input = (DataInputStream) args[0]; byte[] buffer = bufferStream != null ? bufferStream.toByteArray() : null; // Let the people know