After adding a Queue to read incoming packets (client -> server):

Code:
/**
	 * This {@link java.util.Queue} contains all the {@link org.niobe.net.packet.GamePacket}s
	 * that will be executed upon {@link org.niobe.world.update.player.PrePlayerGameUpdate#run()}.
	 */
	private final Queue<GamePacket> incomingPackets = new ConcurrentLinkedQueue<GamePacket>();
My DefaultGamePacket doesn't seem to be read, the queue's size is 1 and yet the pre player update doesn't seem to fetch the packet from the queue... (which is weird because all other packets are read).

Also, if I call the read method directly (from the game packet manager's parse method), it works fine

Spoiler for DefaultGamePacket:
Code:
package org.niobe.net.packet.event;

import java.util.logging.Logger;

import org.niobe.net.packet.GamePacket;
import org.niobe.net.packet.GamePacketEvent;
import org.niobe.world.Player;

/**
 * An implementation of {@link org.niobe.net.packet.GamePacketEvent} which
 * manages a non-set/nulled packet and logs its information. 
 * 
 * @author relex lawl
 */
public final class DefaultGamePacket implements GamePacketEvent {
	
	/**
	 * The  logger to debug information and print out errors.
	 */
	private static final Logger logger = Logger.getLogger(DefaultGamePacket.class.getName());

	@Override
	public void read(Player player, GamePacket packet) {
		logger.warning("Unhandled game packet - [opcode, size] : [" + packet.getOpcode() + ", " + packet.getSize() + "]");
	}
}


Spoiler for PrePlayerGameUpdate:
Code:
GamePacket packet = null;
		while ((packet = player.getIncomingPackets().poll()) != null) {
			final GamePacketEvent event = GamePacketManager.getPackets()[packet.getOpcode()];
			event.read(player, packet);
		}


Spoiler for GamePacketManager:
Code:
public final class GamePacketManager {
		
	/**
	 * The array containing all packets that can be sent
	 * from a player's client.
	 */
	private static final GamePacketEvent[] packets = new GamePacketEvent[256];
	
	/**
	 * The {@link org.niobe.net.packet.event.DefaultGamePacket} singleton, to avoid
	 * creating new instances.
	 */
	private static final GamePacketEvent DEFAULT_PACKET_EVENT = new DefaultGamePacket();
	
	/**
	 * Receives the packet from a player's client and passes
	 * onto the respective packet's read method.
	 * @param player	The player setting off the packet.
	 * @param packet	The packet received from the player.
	 */
	public static void parse(Player player, GamePacket packet) {
		GamePacketEvent event = packets[packet.getOpcode()];
		if (event == null) {
			event = DEFAULT_PACKET_EVENT;
		}
		if (!event.getClass().getName().equals(SilencedGamePacket.class.getName())) {
			player.getIncomingPackets().offer(packet);
			System.out.println("packet's size: " + player.getIncomingPackets().size());
		}
		//event.read(player, packet);
	}