diff --git a/CraftBukkit-Patches/0102-Fix-Ping-Player-Sample.patch b/CraftBukkit-Patches/0102-Fix-Ping-Player-Sample.patch
new file mode 100644
index 0000000000..2d2ea9d4cb
--- /dev/null
+++ b/CraftBukkit-Patches/0102-Fix-Ping-Player-Sample.patch
@@ -0,0 +1,61 @@
+From d8be3082b4cc82d525e1152efc58bced681890b1 Mon Sep 17 00:00:00 2001
+From: md_5 <git@md-5.net>
+Date: Sun, 26 Jan 2014 12:13:31 +1100
+Subject: [PATCH] Fix Ping Player Sample
+
+
+diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
+index a549a95..e967d17 100644
+--- a/src/main/java/net/minecraft/server/MinecraftServer.java
++++ b/src/main/java/net/minecraft/server/MinecraftServer.java
+@@ -105,6 +105,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
+     private static final int TPS = 20;
+     private static final int TICK_TIME = 1000000000 / TPS;
+     public final double[] recentTps = new double[ 3 ];
++    public EntityPlayer[] pingPlayers;
+     // Spigot end
+ 
+     public MinecraftServer(OptionSet options, Proxy proxy) { // CraftBukkit - signature file -> OptionSet
+@@ -560,15 +561,23 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
+         if (i - this.T >= 5000000000L) {
+             this.T = i;
+             this.p.setPlayerSample(new ServerPingPlayerSample(this.C(), this.B()));
+-            GameProfile[] agameprofile = new GameProfile[Math.min(this.B(), 12)];
++            EntityPlayer[] agameprofile = new EntityPlayer[Math.min(this.B(), 12)]; // Spigot
+             int j = MathHelper.nextInt(this.q, 0, this.B() - agameprofile.length);
+ 
+             for (int k = 0; k < agameprofile.length; ++k) {
+-                agameprofile[k] = ((EntityPlayer) this.t.players.get(j + k)).getProfile();
++                agameprofile[k] = ((EntityPlayer) this.t.players.get(j + k)); // Spigot
+             }
+ 
+             Collections.shuffle(Arrays.asList(agameprofile));
+-            this.p.b().a(agameprofile);
++            // Spigot Start
++            GameProfile[] profiles = new GameProfile[ agameprofile.length ];
++            for ( int l = 0; l < profiles.length; l++ )
++            {
++                profiles[l] = agameprofile[l].getProfile();
++            }
++            this.p.b().a( profiles );
++            this.pingPlayers = agameprofile;
++            // Spigot End
+         }
+ 
+         if ((this.autosavePeriod > 0) && ((this.ticks % this.autosavePeriod) == 0)) { // CraftBukkit
+diff --git a/src/main/java/net/minecraft/server/PacketStatusListener.java b/src/main/java/net/minecraft/server/PacketStatusListener.java
+index 7903c43..8203fbd 100644
+--- a/src/main/java/net/minecraft/server/PacketStatusListener.java
++++ b/src/main/java/net/minecraft/server/PacketStatusListener.java
+@@ -35,7 +35,7 @@ public class PacketStatusListener implements PacketStatusInListener {
+ 
+     public void a(PacketStatusInStart packetstatusinstart) {
+         // CraftBukkit start - fire ping event
+-        final Object[] players = minecraftServer.getPlayerList().players.toArray();
++        final Object[] players = minecraftServer.pingPlayers;
+         class ServerListPingEvent extends org.bukkit.event.server.ServerListPingEvent {
+             CraftIconCache icon = minecraftServer.server.getServerIcon();
+ 
+-- 
+1.8.3.2
+