Partial fix for async packets

This commit is contained in:
Dan Mulloy 2014-12-28 13:34:40 -05:00
parent 7d5e1b9c34
commit 10f9c4c9f9
2 changed files with 30 additions and 13 deletions

View File

@ -26,12 +26,14 @@ import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import com.comphenix.protocol.PacketStream;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.NetworkMarker;
import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.injector.PrioritizedListener;
import com.comphenix.protocol.reflect.FieldAccessException;
import com.comphenix.protocol.reflect.FuzzyReflection;
import com.comphenix.protocol.utility.MinecraftReflection;
import com.comphenix.protocol.utility.MinecraftVersion;
import com.google.common.primitives.Longs;
/**
@ -415,6 +417,10 @@ public class AsyncMarker implements Serializable, Comparable<AsyncMarker> {
} else if (methods.size() == 1) {
// We're in 1.2.5
alwaysSync = true;
} else if (MinecraftVersion.getCurrentVersion().equals(MinecraftVersion.BOUNTIFUL_UPDATE)) {
// The centralized async marker was removed in 1.8
// The only packet I know for sure is async is incoming chat
return event.getPacketType() == PacketType.Play.Client.CHAT;
} else {
System.err.println("[ProtocolLib] Cannot determine asynchronous state of packets!");
alwaysSync = true;

View File

@ -23,6 +23,7 @@ import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.bukkit.Bukkit;
import org.bukkit.Server;
import com.comphenix.protocol.ProtocolLibrary;
@ -310,4 +311,14 @@ public class MinecraftVersion implements Comparable<MinecraftVersion>, Serializa
public static MinecraftVersion fromServerVersion(String serverVersion) {
return new MinecraftVersion(extractVersion(serverVersion));
}
private static MinecraftVersion currentVersion;
public static MinecraftVersion getCurrentVersion() {
if (currentVersion == null) {
currentVersion = new MinecraftVersion(Bukkit.getVersion());
}
return currentVersion;
}
}