public boolean queueUnwrappedPacket(EntityPlayer player, Object packetObj) {
if (packetObj == null) return true;
if (player == null) {
if (packetObj instanceof C00PacketKeepAlive || packetObj instanceof S00PacketKeepAlive) {
NORELEASE.fixme("Shouldn't this, like, not happen?");
return true;
}
NORELEASE.println("No player to handle: " + packetObj + " " + packetObj.getClass().getSimpleName());
return true;
}
if (player.worldObj.isRemote) return false;
Packet packet = (Packet) packetObj;
// May possibly need to inject the liason into things up higher, during reading. Somehow. Hopefulloy won't be needed.
InteractionLiason liason = InteractionLiason.activeLiasons.get(player);
if (liason == null) {
if (!(packet instanceof C00PacketKeepAlive)) {
// Seems our system isn't perfect. :/
// Keepalives are generated from a different thread I guess.
Hammer.logWarning("Liasonless wrapped packet: " + packet.getClass().getSimpleName() + " " + packet.toString());
}
return true;
}
NetHandlerPlayServer handler = liason.playerNetServerHandler;
if (packet instanceof FMLProxyPacket) {
FMLProxyPacket fml = (FMLProxyPacket) packet;
NetworkDispatcher dispatcher = handler.netManager.channel().attr(NetworkDispatcher.FML_DISPATCHER).get();
fml.setTarget(Side.CLIENT);
fml.setDispatcher(dispatcher);
if (fml.payload().readerIndex() != 0) {
Core.logSevere("Packet double-processing detected! Channel: " + fml.channel());
return true;
}
}
packet.processPacket(handler);
return true;
}
HammerProxy.java 文件源码
java
阅读 30
收藏 0
点赞 0
评论 0
项目:Factorization
作者:
评论列表
文章目录