--- ../work/decompile-8eb82bde//net/minecraft/server/WorldMapHumanTracker.java	2014-11-28 17:43:43.437707427 +0000
+++ src/main/java/net/minecraft/server/WorldMapHumanTracker.java	2014-11-28 17:38:19.000000000 +0000
@@ -23,12 +23,26 @@
     }
 
     public Packet a(ItemStack itemstack) {
+        // CraftBukkit start
+        org.bukkit.craftbukkit.map.RenderData render = this.worldMap.mapView.render((org.bukkit.craftbukkit.entity.CraftPlayer) this.trackee.getBukkitEntity()); // CraftBukkit
+
+        java.util.Collection<MapIcon> icons = new java.util.ArrayList<MapIcon>();
+
+        for ( org.bukkit.map.MapCursor cursor : render.cursors) {
+           
+            if (cursor.isVisible()) {
+                icons.add(new MapIcon(cursor.getRawType(), cursor.getX(), cursor.getY(), cursor.getDirection()));
+            }
+        }
+
+
         if (this.d) {
             this.d = false;
-            return new PacketPlayOutMap(itemstack.getData(), this.worldMap.scale, this.worldMap.decorations.values(), this.worldMap.colors, this.e, this.f, this.g + 1 - this.e, this.h + 1 - this.f);
+            return new PacketPlayOutMap(itemstack.getData(), this.worldMap.scale, icons, render.buffer, this.e, this.f, this.g + 1 - this.e, this.h + 1 - this.f);
         } else {
-            return this.i++ % 5 == 0 ? new PacketPlayOutMap(itemstack.getData(), this.worldMap.scale, this.worldMap.decorations.values(), this.worldMap.colors, 0, 0, 0, 0) : null;
+            return this.i++ % 5 == 0 ? new PacketPlayOutMap(itemstack.getData(), this.worldMap.scale, icons, render.buffer, 0, 0, 0, 0) : null;
         }
+        // CraftBukkit end
     }
 
     public void a(int i, int j) {