diff --git a/patches/net/minecraft/entity/item/EntityItemFrame.java.patch b/patches/net/minecraft/entity/item/EntityItemFrame.java.patch index 2edbf57..e33c03f 100644 --- a/patches/net/minecraft/entity/item/EntityItemFrame.java.patch +++ b/patches/net/minecraft/entity/item/EntityItemFrame.java.patch @@ -14,6 +14,15 @@ this.func_146065_b(p_70097_1_.getEntity(), false); this.setDisplayedItem((ItemStack)null); } +@@ -115,7 +122,7 @@ + if (p_110131_1_.getItem() == Items.filled_map) + { + MapData mapdata = ((ItemMap)p_110131_1_.getItem()).getMapData(p_110131_1_, this.worldObj); +- mapdata.playersVisibleOnMap.remove("frame-" + this.getEntityId()); ++ mapdata.playersVisibleOnMap.remove(java.util.UUID.nameUUIDFromBytes(("frame-" + this.getEntityId()).getBytes(org.apache.commons.codec.Charsets.US_ASCII))); // Spigot + } + + p_110131_1_.setItemFrame((EntityItemFrame)null); @@ -203,4 +210,11 @@ return true; diff --git a/patches/net/minecraft/world/storage/MapData.java.patch b/patches/net/minecraft/world/storage/MapData.java.patch index fb5fc73..cc26319 100644 --- a/patches/net/minecraft/world/storage/MapData.java.patch +++ b/patches/net/minecraft/world/storage/MapData.java.patch @@ -15,10 +15,16 @@ public class MapData extends WorldSavedData { public int xCenter; -@@ -24,11 +32,21 @@ - public List playersArrayList = new ArrayList(); - private Map playersHashMap = new HashMap(); - public Map playersVisibleOnMap = new LinkedHashMap(); +@@ -21,14 +29,24 @@ + public int dimension; + public byte scale; + public byte[] colors = new byte[16384]; +- public List playersArrayList = new ArrayList(); +- private Map playersHashMap = new HashMap(); +- public Map playersVisibleOnMap = new LinkedHashMap(); ++ public List playersArrayList = new ArrayList(); // Spigot ++ private Map playersHashMap = new HashMap(); // Spigot ++ public Map playersVisibleOnMap = new LinkedHashMap(); // Spigot + + // CraftBukkit start + public final CraftMapView mapView; @@ -37,7 +43,7 @@ } public void readFromNBT(NBTTagCompound p_76184_1_) -@@ -107,7 +125,7 @@ +@@ -107,14 +125,14 @@ { if (!this.playersHashMap.containsKey(p_76191_1_)) { @@ -46,6 +52,55 @@ this.playersHashMap.put(p_76191_1_, mapinfo); this.playersArrayList.add(mapinfo); } + + if (!p_76191_1_.inventory.hasItemStack(p_76191_2_)) + { +- this.playersVisibleOnMap.remove(p_76191_1_.getCommandSenderName()); ++ this.playersVisibleOnMap.remove(p_76191_1_.getUniqueID()); + } + + for (int i = 0; i < this.playersArrayList.size(); ++i) +@@ -125,7 +143,7 @@ + { + if (!p_76191_2_.isOnItemFrame() && mapinfo1.entityplayerObj.dimension == this.dimension) + { +- this.func_82567_a(0, mapinfo1.entityplayerObj.worldObj, mapinfo1.entityplayerObj.getCommandSenderName(), mapinfo1.entityplayerObj.posX, mapinfo1.entityplayerObj.posZ, (double)mapinfo1.entityplayerObj.rotationYaw); ++ this.func_82567_a(0, mapinfo1.entityplayerObj.worldObj, mapinfo1.entityplayerObj.getCommandSenderName(), mapinfo1.entityplayerObj.getUniqueID(), mapinfo1.entityplayerObj.posX, mapinfo1.entityplayerObj.posZ, (double)mapinfo1.entityplayerObj.rotationYaw); + } + } + else +@@ -137,11 +155,11 @@ + + if (p_76191_2_.isOnItemFrame()) + { +- this.func_82567_a(1, p_76191_1_.worldObj, "frame-" + p_76191_2_.getItemFrame().getEntityId(), (double)p_76191_2_.getItemFrame().field_146063_b, (double)p_76191_2_.getItemFrame().field_146062_d, (double)(p_76191_2_.getItemFrame().hangingDirection * 90)); ++ this.func_82567_a(1, p_76191_1_.worldObj, "frame-" + p_76191_2_.getItemFrame().getEntityId(), UUID.nameUUIDFromBytes(("frame-" + p_76191_2_.getItemFrame().getEntityId()).getBytes(org.apache.commons.codec.Charsets.US_ASCII)), (double)p_76191_2_.getItemFrame().field_146063_b, (double)p_76191_2_.getItemFrame().field_146062_d, (double)(p_76191_2_.getItemFrame().hangingDirection * 90)); + } + } + +- private void func_82567_a(int p_82567_1_, World p_82567_2_, String p_82567_3_, double p_82567_4_, double p_82567_6_, double p_82567_8_) ++ private void func_82567_a(int p_82567_1_, World p_82567_2_, String entityName, UUID p_82567_3_, double p_82567_4_, double p_82567_6_, double p_82567_8_) + { + int j = 1 << this.scale; + float f = (float)(p_82567_4_ - (double)this.xCenter) / (float)j; +@@ -156,7 +174,7 @@ + p_82567_8_ += p_82567_8_ < 0.0D ? -8.0D : 8.0D; + b2 = (byte)((int)(p_82567_8_ * 16.0D / 360.0D)); + +- if (p_82567_2_.provider.shouldMapSpin(p_82567_3_, p_82567_4_, p_82567_6_, p_82567_8_)) ++ if (p_82567_2_.provider.shouldMapSpin(entityName, p_82567_4_, p_82567_6_, p_82567_8_)) + { + int k = (int)(p_82567_2_.getWorldInfo().getWorldTime() / 10L); + b2 = (byte)(k * k * 34187121 + k * 121 >> 15 & 15); +@@ -250,7 +268,7 @@ + byte b3 = p_76192_1_[i * 3 + 2]; + byte b0 = p_76192_1_[i * 3 + 3]; + byte b1 = (byte)(p_76192_1_[i * 3 + 1] & 15); +- this.playersVisibleOnMap.put("icon-" + i, new MapData.MapCoord(b2, b3, b0, b1)); ++ this.playersVisibleOnMap.put(UUID.nameUUIDFromBytes(("icon-" + i).getBytes(org.apache.commons.codec.Charsets.US_ASCII)), new MapData.MapCoord(b2, b3, b0, b1)); + } + } + else if (p_76192_1_[0] == 2) @@ -265,7 +283,7 @@ if (mapinfo == null) diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java index 4dbbca5..5f5339e 100644 --- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java +++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java @@ -1,5 +1,6 @@ package org.bukkit.craftbukkit.map; +import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -32,9 +33,9 @@ public class CraftMapRenderer extends MapRenderer { cursors.removeCursor(cursors.getCursor(0)); } - for (Object key : worldMap.playersVisibleOnMap.keySet()) { + for (UUID key : worldMap.playersVisibleOnMap.keySet()) { // Spigot string -> uuid // If this cursor is for a player check visibility with vanish system - Player other = Bukkit.getPlayerExact((String) key); + Player other = Bukkit.getPlayer(key); // Spigot if (other != null && !player.canSee(other)) { continue; }