public void c() { if (!this.i.isComplete()) { this.i = this.a(this.i); } // CraftBukkit start - fire PlayerLoginEvent EntityPlayer s = this.server.getPlayerList().attemptLogin(this, this.i, this.hostname); if (s == null) { // this.disconnect(s); // CraftBukkit end } else { this.g = EnumProtocolState.e; this.networkManager.handle(new PacketLoginOutSuccess(this.i), new GenericFutureListener[0]); this.server.getPlayerList().a(this.networkManager, this.server.getPlayerList().processLogin(this.i, s)); // CraftBukkit - add player reference } }
public void disconnect(String s) { // CraftBukkit start - fire PlayerKickEvent String leaveMessage = EnumChatFormat.YELLOW + this.player.getName() + " left the game."; PlayerKickEvent event = new PlayerKickEvent(this.server.getPlayer(this.player), s, leaveMessage); if (this.server.getServer().isRunning()) { this.server.getPluginManager().callEvent(event); } if (event.isCancelled()) { // Do not kick the player return; } // Send the possibly modified leave message s = event.getReason(); // CraftBukkit end ChatComponentText chatcomponenttext = new ChatComponentText(s); this.networkManager.handle(new PacketPlayOutKickDisconnect(chatcomponenttext), new GenericFutureListener[] { new PlayerConnectionFuture(this, chatcomponenttext)}); this.a(chatcomponenttext); // CraftBukkit - Process quit immediately this.networkManager.g(); }
private void b(Packet packet, GenericFutureListener[] agenericfuturelistener) { EnumProtocol enumprotocol = EnumProtocol.a(packet); EnumProtocol enumprotocol1 = (EnumProtocol) this.m.attr(d).get(); if (enumprotocol1 != enumprotocol) { i.debug("Disabled auto read"); this.m.config().setAutoRead(false); } if (this.m.eventLoop().inEventLoop()) { if (enumprotocol != enumprotocol1) { this.a(enumprotocol); } this.m.writeAndFlush(packet).addListeners(agenericfuturelistener).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE); } else { this.m.eventLoop().execute(new QueuedProtocolSwitch(this, enumprotocol, enumprotocol1, packet, agenericfuturelistener)); } }
public void c() { // Spigot start - Moved to initUUID /* if (!this.i.isComplete()) { this.i = this.a(this.i); } */ // Spigot end // CraftBukkit start - fire PlayerLoginEvent EntityPlayer s = this.server.getPlayerList().attemptLogin(this, this.i, this.hostname); if (s == null) { // this.disconnect(s); // CraftBukkit end } else { this.g = EnumProtocolState.e; this.networkManager.handle(new PacketLoginOutSuccess(this.i), new GenericFutureListener[0]); this.server.getPlayerList().a(this.networkManager, this.server.getPlayerList().processLogin(this.i, s)); // CraftBukkit - add player reference } }
public void disconnect(String s) { try { c.info("Disconnecting " + this.getName() + ": " + s); ChatComponentText chatcomponenttext = new ChatComponentText(s); this.networkManager.handle(new PacketLoginOutDisconnect(chatcomponenttext), new GenericFutureListener[0]); this.networkManager.close(chatcomponenttext); } catch (Exception exception) { c.error("Error whilst disconnecting player", exception); } }
public void a(PacketLoginInStart packetlogininstart) { Validate.validState(this.g == EnumProtocolState.HELLO, "Unexpected hello packet", new Object[0]); this.i = packetlogininstart.c(); if (this.server.getOnlineMode() && !this.networkManager.c()) { this.g = EnumProtocolState.KEY; this.networkManager.handle(new PacketLoginOutEncryptionBegin(this.j, this.server.K().getPublic(), this.e), new GenericFutureListener[0]); } else { this.g = EnumProtocolState.READY_TO_ACCEPT; } }
public void sendPacket(Packet packet) { if (packet instanceof PacketPlayOutChat) { PacketPlayOutChat packetplayoutchat = (PacketPlayOutChat) packet; EnumChatVisibility enumchatvisibility = this.player.getChatFlags(); if (enumchatvisibility == EnumChatVisibility.HIDDEN) { return; } if (enumchatvisibility == EnumChatVisibility.SYSTEM && !packetplayoutchat.d()) { return; } } // CraftBukkit start if (packet == null) { return; } else if (packet instanceof PacketPlayOutSpawnPosition) { PacketPlayOutSpawnPosition packet6 = (PacketPlayOutSpawnPosition) packet; this.player.compassTarget = new Location(this.getPlayer().getWorld(), packet6.x, packet6.y, packet6.z); } // CraftBukkit end try { this.networkManager.handle(packet, new GenericFutureListener[0]); } catch (Throwable throwable) { CrashReport crashreport = CrashReport.a(throwable, "Sending packet"); CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Packet being sent"); crashreportsystemdetails.a("Packet class", (Callable) (new CrashReportConnectionPacketClass(this, packet))); throw new ReportedException(crashreport); } }
public void handle(Packet packet, GenericFutureListener... agenericfuturelistener) { if (this.m != null && this.m.isOpen()) { this.i(); this.b(packet, agenericfuturelistener); } else { this.l.add(new QueuedPacket(packet, agenericfuturelistener)); } }
public void a(PacketLoginInStart packetlogininstart) { Validate.validState(this.g == EnumProtocolState.HELLO, "Unexpected hello packet", new Object[0]); this.i = packetlogininstart.c(); if (this.server.getOnlineMode() && !this.networkManager.c()) { this.g = EnumProtocolState.KEY; this.networkManager.handle(new PacketLoginOutEncryptionBegin(this.j, this.server.K().getPublic(), this.e), new GenericFutureListener[0]); } else { (new ThreadPlayerLookupUUID(this, "User Authenticator #" + b.incrementAndGet())).start(); // Spigot } }
public QueuedPacket(Packet packet, GenericFutureListener... agenericfuturelistener) { this.a = packet; this.b = agenericfuturelistener; }
static GenericFutureListener[] b(QueuedPacket queuedpacket) { return queuedpacket.b; }
public void a(PacketHandshakingInSetProtocol packethandshakinginsetprotocol) { switch (ProtocolOrdinalWrapper.a[packethandshakinginsetprotocol.c().ordinal()]) { case 1: this.b.a(EnumProtocol.LOGIN); ChatComponentText chatcomponenttext; // CraftBukkit start - Connection throttle try { long currentTime = System.currentTimeMillis(); long connectionThrottle = MinecraftServer.getServer().server.getConnectionThrottle(); InetAddress address = ((java.net.InetSocketAddress) this.b.getSocketAddress()).getAddress(); synchronized (throttleTracker) { if (throttleTracker.containsKey(address) && !"127.0.0.1".equals(address.getHostAddress()) && currentTime - throttleTracker.get(address) < connectionThrottle) { throttleTracker.put(address, currentTime); chatcomponenttext = new ChatComponentText("Connection throttled! Please wait before reconnecting."); this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext), new GenericFutureListener[0]); this.b.close(chatcomponenttext); return; } throttleTracker.put(address, currentTime); throttleCounter++; if (throttleCounter > 200) { throttleCounter = 0; // Cleanup stale entries java.util.Iterator iter = throttleTracker.entrySet().iterator(); while (iter.hasNext()) { java.util.Map.Entry<InetAddress, Long> entry = (java.util.Map.Entry) iter.next(); if (entry.getValue() > connectionThrottle) { iter.remove(); } } } } } catch (Throwable t) { org.apache.logging.log4j.LogManager.getLogger().debug("Failed to check connection throttle", t); } // CraftBukkit end if (packethandshakinginsetprotocol.d() > 5) { chatcomponenttext = new ChatComponentText("Outdated server! I\'m still on 1.7.10"); this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext), new GenericFutureListener[0]); this.b.close(chatcomponenttext); } else if (packethandshakinginsetprotocol.d() < 5) { chatcomponenttext = new ChatComponentText("Outdated client! Please use 1.7.10"); this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext), new GenericFutureListener[0]); this.b.close(chatcomponenttext); } else { this.b.a((PacketListener) (new LoginListener(this.a, this.b))); ((LoginListener) this.b.getPacketListener()).hostname = packethandshakinginsetprotocol.b + ":" + packethandshakinginsetprotocol.c; // CraftBukkit - set hostname } break; case 2: this.b.a(EnumProtocol.STATUS); this.b.a((PacketListener) (new PacketStatusListener(this.a, this.b))); break; default: throw new UnsupportedOperationException("Invalid intention " + packethandshakinginsetprotocol.c()); } }
public void a(PacketStatusInPing packetstatusinping) { this.networkManager.handle(new PacketStatusOutPong(packetstatusinping.c()), new GenericFutureListener[0]); }
public void c() { List list = this.f; synchronized (this.f) { // Spigot Start // This prevents players from 'gaming' the server, and strategically relogging to increase their position in the tick order if ( org.spigotmc.SpigotConfig.playerShuffle > 0 && MinecraftServer.currentTick % org.spigotmc.SpigotConfig.playerShuffle == 0 ) { Collections.shuffle( this.f ); } // Spigot End Iterator iterator = this.f.iterator(); while (iterator.hasNext()) { NetworkManager networkmanager = (NetworkManager) iterator.next(); if (!networkmanager.isConnected()) { // Spigot Start // Fix a race condition where a NetworkManager could be unregistered just before connection. if (networkmanager.preparing) continue; // Spigot End iterator.remove(); if (networkmanager.f() != null) { networkmanager.getPacketListener().a(networkmanager.f()); } else if (networkmanager.getPacketListener() != null) { networkmanager.getPacketListener().a(new ChatComponentText("Disconnected")); } } else { try { networkmanager.a(); } catch (Exception exception) { if (networkmanager.c()) { CrashReport crashreport = CrashReport.a(exception, "Ticking memory connection"); CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Ticking connection"); crashreportsystemdetails.a("Connection", (Callable) (new CrashReportServerConnection(this, networkmanager))); throw new ReportedException(crashreport); } b.warn("Failed to handle packet for " + networkmanager.getSocketAddress(), exception); ChatComponentText chatcomponenttext = new ChatComponentText("Internal server error"); networkmanager.handle(new PacketPlayOutKickDisconnect(chatcomponenttext), new GenericFutureListener[] { new ServerConnectionFuture(this, networkmanager, chatcomponenttext)}); networkmanager.g(); } } } } }
public void handle(Packet packet, GenericFutureListener... agenericfuturelistener) { }
private void b(Packet packet, GenericFutureListener[] agenericfuturelistener) { }