public void handleChat(Packet3Chat packet3chat) { String s = packet3chat.message; if (s.length() > 100) { kickPlayer("Chat message too long"); return; } s = s.trim(); for (int i = 0; i < s.length(); i++) { if (ChatAllowedCharacters.allowedCharacters.indexOf(s.charAt(i)) < 0) { kickPlayer("Illegal characters in chat"); return; } } if (s.startsWith("/")) { handleSlashCommand(s); } else { s = (new StringBuilder()) .append("<") .append(playerEntity.username) .append("> ") .append(s) .toString(); logger.info(s); mcServer.configManager.sendPacketToAllPlayers(new Packet3Chat(s)); } }
/** Handles all incoming connections and packets */ public void handleNetworkListenThread() { for (int var1 = 0; var1 < this.connections.size(); ++var1) { NetServerHandler var2 = (NetServerHandler) this.connections.get(var1); try { var2.handlePackets(); } catch (Exception var5) { if (var2.netManager instanceof MemoryConnection) { CrashReport var4 = CrashReport.makeCrashReport(var5, "Ticking memory connection"); throw new ReportedException(var4); } this.mcServer .getLogAgent() .logWarningException( "Failed to handle packet for " + var2.playerEntity.getEntityName() + "/" + var2.playerEntity.getPlayerIP() + ": " + var5, var5); var2.kickPlayer("Internal server error"); } if (var2.connectionClosed) { this.connections.remove(var1--); } var2.netManager.wakeThreads(); } }
public void registerPacket(Packet packet) { logger.warning( (new StringBuilder()) .append(getClass()) .append(" wasn't prepared to deal with a ") .append(packet.getClass()) .toString()); kickPlayer("Protocol error, unexpected packet"); }
public void handleFlying(Packet10Flying packet10flying) { WorldServer worldserver = mcServer.getWorldManager(playerEntity.dimension); field_22003_h = true; if (!hasMoved) { double d = packet10flying.yPosition - lastPosY; if (packet10flying.xPosition == lastPosX && d * d < 0.01D && packet10flying.zPosition == lastPosZ) { hasMoved = true; } } if (hasMoved) { if (playerEntity.ridingEntity != null) { float f = playerEntity.rotationYaw; float f1 = playerEntity.rotationPitch; playerEntity.ridingEntity.updateRiderPosition(); double d2 = playerEntity.posX; double d4 = playerEntity.posY; double d6 = playerEntity.posZ; double d8 = 0.0D; double d9 = 0.0D; if (packet10flying.rotating) { f = packet10flying.yaw; f1 = packet10flying.pitch; } if (packet10flying.moving && packet10flying.yPosition == -999D && packet10flying.stance == -999D) { d8 = packet10flying.xPosition; d9 = packet10flying.zPosition; } playerEntity.onGround = packet10flying.onGround; playerEntity.onUpdateEntity(true); playerEntity.moveEntity(d8, 0.0D, d9); playerEntity.setPositionAndRotation(d2, d4, d6, f, f1); playerEntity.motionX = d8; playerEntity.motionZ = d9; if (playerEntity.ridingEntity != null) { worldserver.func_12017_b(playerEntity.ridingEntity, true); } if (playerEntity.ridingEntity != null) { playerEntity.ridingEntity.updateRiderPosition(); } mcServer.configManager.func_613_b(playerEntity); lastPosX = playerEntity.posX; lastPosY = playerEntity.posY; lastPosZ = playerEntity.posZ; worldserver.updateEntity(playerEntity); return; } if (playerEntity.func_22057_E()) { playerEntity.onUpdateEntity(true); playerEntity.setPositionAndRotation( lastPosX, lastPosY, lastPosZ, playerEntity.rotationYaw, playerEntity.rotationPitch); worldserver.updateEntity(playerEntity); return; } double d1 = playerEntity.posY; lastPosX = playerEntity.posX; lastPosY = playerEntity.posY; lastPosZ = playerEntity.posZ; double d3 = playerEntity.posX; double d5 = playerEntity.posY; double d7 = playerEntity.posZ; float f2 = playerEntity.rotationYaw; float f3 = playerEntity.rotationPitch; if (packet10flying.moving && packet10flying.yPosition == -999D && packet10flying.stance == -999D) { packet10flying.moving = false; } if (packet10flying.moving) { d3 = packet10flying.xPosition; d5 = packet10flying.yPosition; d7 = packet10flying.zPosition; double d10 = packet10flying.stance - packet10flying.yPosition; if (!playerEntity.func_22057_E() && (d10 > 1.6499999999999999D || d10 < 0.10000000000000001D)) { kickPlayer("Illegal stance"); logger.warning( (new StringBuilder()) .append(playerEntity.username) .append(" had an illegal stance: ") .append(d10) .toString()); return; } if (Math.abs(packet10flying.xPosition) > 32000000D || Math.abs(packet10flying.zPosition) > 32000000D) { kickPlayer("Illegal position"); return; } } if (packet10flying.rotating) { f2 = packet10flying.yaw; f3 = packet10flying.pitch; } playerEntity.onUpdateEntity(true); playerEntity.ySize = 0.0F; playerEntity.setPositionAndRotation(lastPosX, lastPosY, lastPosZ, f2, f3); if (!hasMoved) { return; } double d11 = d3 - playerEntity.posX; double d12 = d5 - playerEntity.posY; double d13 = d7 - playerEntity.posZ; double d14 = d11 * d11 + d12 * d12 + d13 * d13; if (d14 > 100D) { logger.warning( (new StringBuilder()) .append(playerEntity.username) .append(" moved too quickly!") .toString()); kickPlayer("You moved too quickly :( (Hacking?)"); return; } float f4 = 0.0625F; boolean flag = worldserver .getCollidingBoundingBoxes( playerEntity, playerEntity.boundingBox.copy().getInsetBoundingBox(f4, f4, f4)) .size() == 0; playerEntity.moveEntity(d11, d12, d13); d11 = d3 - playerEntity.posX; d12 = d5 - playerEntity.posY; if (d12 > -0.5D || d12 < 0.5D) { d12 = 0.0D; } d13 = d7 - playerEntity.posZ; d14 = d11 * d11 + d12 * d12 + d13 * d13; boolean flag1 = false; if (d14 > 0.0625D && !playerEntity.func_22057_E()) { flag1 = true; logger.warning( (new StringBuilder()) .append(playerEntity.username) .append(" moved wrongly!") .toString()); System.out.println( (new StringBuilder()) .append("Got position ") .append(d3) .append(", ") .append(d5) .append(", ") .append(d7) .toString()); System.out.println( (new StringBuilder()) .append("Expected ") .append(playerEntity.posX) .append(", ") .append(playerEntity.posY) .append(", ") .append(playerEntity.posZ) .toString()); } playerEntity.setPositionAndRotation(d3, d5, d7, f2, f3); boolean flag2 = worldserver .getCollidingBoundingBoxes( playerEntity, playerEntity.boundingBox.copy().getInsetBoundingBox(f4, f4, f4)) .size() == 0; if (flag && (flag1 || !flag2) && !playerEntity.func_22057_E()) { teleportTo(lastPosX, lastPosY, lastPosZ, f2, f3); return; } AxisAlignedBB axisalignedbb = playerEntity .boundingBox .copy() .expand(f4, f4, f4) .addCoord(0.0D, -0.55000000000000004D, 0.0D); if (!mcServer.allowFlight && !worldserver.func_27069_b(axisalignedbb)) { if (d12 >= -0.03125D) { playerInAirTime++; if (playerInAirTime > 80) { logger.warning( (new StringBuilder()) .append(playerEntity.username) .append(" was kicked for floating too long!") .toString()); kickPlayer("Flying is not enabled on this server"); return; } } } else { playerInAirTime = 0; } playerEntity.onGround = packet10flying.onGround; mcServer.configManager.func_613_b(playerEntity); playerEntity.handleFalling(playerEntity.posY - d1, packet10flying.onGround); } }