public void handleChat(Packet3Chat par1Packet3Chat) { ModLoader.serverChat(this, par1Packet3Chat.message); if (playerEntity.getChatVisibility() == 2) { sendPacketToPlayer(new Packet3Chat("Cannot send chat message.")); return; } String s = par1Packet3Chat.message; if (s.length() > 100) { kickPlayerFromServer("Chat message too long"); return; } s = s.trim(); for (int i = 0; i < s.length(); i++) { if (!ChatAllowedCharacters.isAllowedCharacter(s.charAt(i))) { kickPlayerFromServer("Illegal characters in chat"); return; } } if (s.startsWith("/")) { func_72566_d(s); } else { if (playerEntity.getChatVisibility() == 1) { sendPacketToPlayer(new Packet3Chat("Cannot send chat message.")); return; } s = (new StringBuilder()) .append("<") .append(playerEntity.username) .append("> ") .append(s) .toString(); logger.info(s); mcServer.getConfigurationManager().sendPacketToAllPlayers(new Packet3Chat(s, false)); } chatSpamThresholdCount += 20; if (chatSpamThresholdCount > 200 && !mcServer.getConfigurationManager().areCommandsAllowed(playerEntity.username)) { kickPlayerFromServer("disconnect.spam"); } }
public void registerPacket(Packet par1Packet) { logger.warning( (new StringBuilder()) .append(getClass()) .append(" wasn't prepared to deal with a ") .append(par1Packet.getClass()) .toString()); kickPlayerFromServer("Protocol error, unexpected packet"); }
public void handleFlying(Packet10Flying par1Packet10Flying) { WorldServer worldserver = mcServer.worldServerForDimension(playerEntity.dimension); field_72584_h = true; if (playerEntity.playerHasConqueredTheEnd) { return; } if (!field_72587_r) { double d = par1Packet10Flying.yPosition - lastPosY; if (par1Packet10Flying.xPosition == lastPosX && d * d < 0.01D && par1Packet10Flying.zPosition == lastPosZ) { field_72587_r = true; } } if (field_72587_r) { 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 (par1Packet10Flying.rotating) { f = par1Packet10Flying.yaw; f1 = par1Packet10Flying.pitch; } if (par1Packet10Flying.moving && par1Packet10Flying.yPosition == -999D && par1Packet10Flying.stance == -999D) { if (par1Packet10Flying.xPosition > 1.0D || par1Packet10Flying.zPosition > 1.0D) { System.err.println( (new StringBuilder()) .append(playerEntity.username) .append(" was caught trying to crash the server with an invalid position.") .toString()); kickPlayerFromServer("Nope!"); return; } d8 = par1Packet10Flying.xPosition; d9 = par1Packet10Flying.zPosition; } playerEntity.onGround = par1Packet10Flying.onGround; playerEntity.onUpdateEntity(); playerEntity.moveEntity(d8, 0.0D, d9); playerEntity.setPositionAndRotation(d2, d4, d6, f, f1); playerEntity.motionX = d8; playerEntity.motionZ = d9; if (playerEntity.ridingEntity != null) { worldserver.uncheckedUpdateEntity(playerEntity.ridingEntity, true); } if (playerEntity.ridingEntity != null) { playerEntity.ridingEntity.updateRiderPosition(); } mcServer.getConfigurationManager().func_72358_d(playerEntity); lastPosX = playerEntity.posX; lastPosY = playerEntity.posY; lastPosZ = playerEntity.posZ; worldserver.updateEntity(playerEntity); return; } if (playerEntity.isPlayerSleeping()) { playerEntity.onUpdateEntity(); 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 (par1Packet10Flying.moving && par1Packet10Flying.yPosition == -999D && par1Packet10Flying.stance == -999D) { par1Packet10Flying.moving = false; } if (par1Packet10Flying.moving) { d3 = par1Packet10Flying.xPosition; d5 = par1Packet10Flying.yPosition; d7 = par1Packet10Flying.zPosition; double d10 = par1Packet10Flying.stance - par1Packet10Flying.yPosition; if (!playerEntity.isPlayerSleeping() && (d10 > 1.6499999999999999D || d10 < 0.10000000000000001D)) { kickPlayerFromServer("Illegal stance"); logger.warning( (new StringBuilder()) .append(playerEntity.username) .append(" had an illegal stance: ") .append(d10) .toString()); return; } if (Math.abs(par1Packet10Flying.xPosition) > 32000000D || Math.abs(par1Packet10Flying.zPosition) > 32000000D) { kickPlayerFromServer("Illegal position"); return; } } if (par1Packet10Flying.rotating) { f2 = par1Packet10Flying.yaw; f3 = par1Packet10Flying.pitch; } playerEntity.onUpdateEntity(); playerEntity.ySize = 0.0F; playerEntity.setPositionAndRotation(lastPosX, lastPosY, lastPosZ, f2, f3); if (!field_72587_r) { return; } double d11 = d3 - playerEntity.posX; double d12 = d5 - playerEntity.posY; double d13 = d7 - playerEntity.posZ; double d14 = Math.min(Math.abs(d11), Math.abs(playerEntity.motionX)); double d15 = Math.min(Math.abs(d12), Math.abs(playerEntity.motionY)); double d16 = Math.min(Math.abs(d13), Math.abs(playerEntity.motionZ)); double d17 = d14 * d14 + d15 * d15 + d16 * d16; if (d17 > 100D && (!mcServer.isSinglePlayer() || !mcServer.getServerOwner().equals(playerEntity.username))) { logger.warning( (new StringBuilder()) .append(playerEntity.username) .append(" moved too quickly! ") .append(d11) .append(",") .append(d12) .append(",") .append(d13) .append(" (") .append(d14) .append(", ") .append(d15) .append(", ") .append(d16) .append(")") .toString()); setPlayerLocation( lastPosX, lastPosY, lastPosZ, playerEntity.rotationYaw, playerEntity.rotationPitch); return; } float f4 = 0.0625F; boolean flag = worldserver .getCollidingBoundingBoxes( playerEntity, playerEntity.boundingBox.copy().contract(f4, f4, f4)) .isEmpty(); if (playerEntity.onGround && !par1Packet10Flying.onGround && d12 > 0.0D) { playerEntity.addExhaustion(0.2F); } playerEntity.moveEntity(d11, d12, d13); playerEntity.onGround = par1Packet10Flying.onGround; playerEntity.addMovementStat(d11, d12, d13); double d18 = d12; d11 = d3 - playerEntity.posX; d12 = d5 - playerEntity.posY; if (d12 > -0.5D || d12 < 0.5D) { d12 = 0.0D; } d13 = d7 - playerEntity.posZ; d17 = d11 * d11 + d12 * d12 + d13 * d13; boolean flag1 = false; if (d17 > 0.0625D && !playerEntity.isPlayerSleeping() && !playerEntity.theItemInWorldManager.isCreative()) { flag1 = true; logger.warning( (new StringBuilder()) .append(playerEntity.username) .append(" moved wrongly!") .toString()); } playerEntity.setPositionAndRotation(d3, d5, d7, f2, f3); boolean flag2 = worldserver .getCollidingBoundingBoxes( playerEntity, playerEntity.boundingBox.copy().contract(f4, f4, f4)) .isEmpty(); if (flag && (flag1 || !flag2) && !playerEntity.isPlayerSleeping()) { setPlayerLocation(lastPosX, lastPosY, lastPosZ, f2, f3); return; } AxisAlignedBB axisalignedbb = playerEntity .boundingBox .copy() .expand(f4, f4, f4) .addCoord(0.0D, -0.55000000000000004D, 0.0D); if (!mcServer.isFlightAllowed() && !playerEntity.theItemInWorldManager.isCreative() && !worldserver.isAABBNonEmpty(axisalignedbb)) { if (d18 >= -0.03125D) { ticksForFloatKick++; if (ticksForFloatKick > 80) { logger.warning( (new StringBuilder()) .append(playerEntity.username) .append(" was kicked for floating too long!") .toString()); kickPlayerFromServer("Flying is not enabled on this server"); return; } } } else { ticksForFloatKick = 0; } playerEntity.onGround = par1Packet10Flying.onGround; mcServer.getConfigurationManager().func_72358_d(playerEntity); playerEntity.updateFlyingState(playerEntity.posY - d1, par1Packet10Flying.onGround); } }