This commit is contained in:
Sotr
2018-07-13 20:55:02 +08:00
parent e881bb1c23
commit 545ce61711
2 changed files with 4 additions and 3 deletions

View File

@@ -14,8 +14,7 @@ import org.apache.logging.log4j.Logger;
/** /**
* <b>Akarin Changes Note</b><br> * <b>Akarin Changes Note</b><br>
* <br> * <br>
* 1) Make entries-set concurrent<br> * 1) Add lock for entries-set operations<br>
* 2) Add lock for entries-set operations<br>
* @author cakoyo * @author cakoyo
*/ */
public class EntityTracker { public class EntityTracker {
@@ -23,7 +22,7 @@ public class EntityTracker {
private static final Logger a = LogManager.getLogger(); private static final Logger a = LogManager.getLogger();
private final WorldServer world; private final WorldServer world;
private final Set<EntityTrackerEntry> c = Sets.newHashSet(); private final Set<EntityTrackerEntry> c = Sets.newHashSet();
private final ReentrantLock entriesLock = new ReentrantLock(); // Akarin - add lock public final ReentrantLock entriesLock = new ReentrantLock(); // Akarin - add lock
public final IntHashMap<EntityTrackerEntry> trackedEntities = new IntHashMap(); public final IntHashMap<EntityTrackerEntry> trackedEntities = new IntHashMap();
private int e; private int e;

View File

@@ -1161,7 +1161,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
EntityTrackerEntry entry = tracker.trackedEntities.get(other.getId()); EntityTrackerEntry entry = tracker.trackedEntities.get(other.getId());
if (entry != null && !entry.trackedPlayers.contains(getHandle())) { if (entry != null && !entry.trackedPlayers.contains(getHandle())) {
tracker.entriesLock.lock(); // Akarin
entry.updatePlayer(getHandle()); entry.updatePlayer(getHandle());
tracker.entriesLock.unlock(); // Akarin
} }
} }
// Paper start // Paper start