Use async packet listener for sounds packets. Prevents async concurrent modification exception. May be replaced later.

This commit is contained in:
libraryaddict 2014-07-26 07:27:31 +12:00
parent 4038a090d8
commit 4c85f6c319

View File

@ -41,6 +41,7 @@ import org.bukkit.util.Vector;
import com.comphenix.protocol.PacketType; import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.async.AsyncListenerHandler;
import com.comphenix.protocol.events.ListenerPriority; import com.comphenix.protocol.events.ListenerPriority;
import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketContainer;
@ -54,6 +55,7 @@ import com.comphenix.protocol.wrappers.WrappedGameProfile;
import com.comphenix.protocol.wrappers.WrappedWatchableObject; import com.comphenix.protocol.wrappers.WrappedWatchableObject;
public class PacketsManager { public class PacketsManager {
private static AsyncListenerHandler asyncSoundsListener;
/** /**
* This is a fix for the stupidity that is * This is a fix for the stupidity that is
* "I can't separate the sounds from the sounds the player heard, and the sounds of the entity tracker heard" * "I can't separate the sounds from the sounds the player heard, and the sounds of the entity tracker heard"
@ -1062,9 +1064,10 @@ public class PacketsManager {
if (soundsListenerEnabled != enabled) { if (soundsListenerEnabled != enabled) {
soundsListenerEnabled = enabled; soundsListenerEnabled = enabled;
if (soundsListenerEnabled) { if (soundsListenerEnabled) {
ProtocolLibrary.getProtocolManager().addPacketListener(soundsListener); asyncSoundsListener = ProtocolLibrary.getProtocolManager().getAsynchronousManager()
.registerAsyncHandler(soundsListener);
} else { } else {
ProtocolLibrary.getProtocolManager().removePacketListener(soundsListener); ProtocolLibrary.getProtocolManager().getAsynchronousManager().unregisterAsyncHandler(asyncSoundsListener);
} }
} }
} }