|
43 | 43 | Location oldTo = to.clone(); |
44 | 44 | PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); |
45 | 45 | this.cserver.getPluginManager().callEvent(event); |
| 46 | +@@ -709,6 +_,7 @@ |
| 47 | + PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); |
| 48 | + if (packet.getId() == this.awaitingTeleport) { |
| 49 | + if (this.awaitingPositionFromClient == null) { |
| 50 | ++ ServerGamePacketListenerImpl.LOGGER.warn("Disconnected on accept teleport packet. Was not expecting position data from client at this time"); // Purpur - Add more logger output for invalid movement kicks |
| 51 | + this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause |
| 52 | + return; |
| 53 | + } |
46 | 54 | @@ -1169,6 +_,10 @@ |
47 | 55 | final int maxBookPageSize = pageMax.intValue(); |
48 | 56 | final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); |
|
131 | 139 | @Override |
132 | 140 | public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { |
133 | 141 | PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); |
| 142 | +@@ -1285,7 +_,15 @@ |
| 143 | + @Override |
| 144 | + public void handleMovePlayer(ServerboundMovePlayerPacket packet) { |
| 145 | + PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); |
| 146 | +- if (containsInvalidValues(packet.getX(0.0), packet.getY(0.0), packet.getZ(0.0), packet.getYRot(0.0F), packet.getXRot(0.0F))) { |
| 147 | ++ // Purpur start - Add more logger output for invalid movement kicks |
| 148 | ++ boolean invalidX = Double.isNaN(packet.getX(0.0)); |
| 149 | ++ boolean invalidY = Double.isNaN(packet.getY(0.0)); |
| 150 | ++ boolean invalidZ = Double.isNaN(packet.getZ(0.0)); |
| 151 | ++ boolean invalidYaw = !Floats.isFinite(packet.getYRot(0.0F)); |
| 152 | ++ boolean invalidPitch = !Floats.isFinite(packet.getXRot(0.0F)); |
| 153 | ++ if (invalidX || invalidY || invalidZ || invalidYaw || invalidPitch) { |
| 154 | ++ ServerGamePacketListenerImpl.LOGGER.warn(String.format("Disconnected on move player packet. Invalid data: x=%b, y=%b, z=%b, yaw=%b, pitch=%b", invalidX, invalidY, invalidZ, invalidYaw, invalidPitch)); |
| 155 | ++ // Purpur end - Add more logger output for invalid movement kicks |
| 156 | + this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause |
| 157 | + } else { |
| 158 | + ServerLevel serverLevel = this.player.serverLevel(); |
134 | 159 | @@ -1460,7 +_,7 @@ |
135 | 160 | movedWrongly = true; |
136 | 161 | if (event.getLogWarning()) |
|
0 commit comments