Browse Source

[PATCH] Fix unsynchronized entities - submitted by Giovanni Bozzano

Signed-off-by: Spanner_Man <spannerman79@users.noreply.github.com>
master
Spanner_Man 10 years ago
parent
commit
77ab192397
  1. 23
      patches/net/minecraft/entity/EntityTracker.java.patch

23
patches/net/minecraft/entity/EntityTracker.java.patch

@ -8,13 +8,11 @@
import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.EntityRegistry;
@@ -45,8 +46,8 @@ @@ -46,7 +47,7 @@
{
private static final Logger logger = LogManager.getLogger(); private static final Logger logger = LogManager.getLogger();
private final WorldServer theWorld; private final WorldServer theWorld;
- private Set trackedEntities = new HashSet(); private Set trackedEntities = new HashSet();
- private IntHashMap trackedEntityIDs = new IntHashMap(); - private IntHashMap trackedEntityIDs = new IntHashMap();
+ private Set<EntityTrackerEntry> trackedEntities = new pw.prok.imagine.collections.IndirectSet<EntityTrackerEntry>();
+ public IntHashMap trackedEntityIDs = new IntHashMap(); // CraftBukkit - private -> public + public IntHashMap trackedEntityIDs = new IntHashMap(); // CraftBukkit - private -> public
private int entityViewDistance; private int entityViewDistance;
private static final String __OBFID = "CL_00001431"; private static final String __OBFID = "CL_00001431";
@ -54,7 +52,7 @@
entitytrackerentry.removeFromWatchingList(entityplayermp); entitytrackerentry.removeFromWatchingList(entityplayermp);
} }
} }
@@ -267,12 +272,14 @@ @@ -267,11 +272,13 @@
while (iterator.hasNext()) while (iterator.hasNext())
{ {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry)iterator.next(); EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry)iterator.next();
@ -64,12 +62,11 @@
if (entitytrackerentry.playerEntitiesUpdated && entitytrackerentry.myEntity instanceof EntityPlayerMP) if (entitytrackerentry.playerEntitiesUpdated && entitytrackerentry.myEntity instanceof EntityPlayerMP)
{ {
arraylist.add((EntityPlayerMP)entitytrackerentry.myEntity); arraylist.add((EntityPlayerMP)entitytrackerentry.myEntity);
}
+ } + }
}
} }
for (int i = 0; i < arraylist.size(); ++i) @@ -284,7 +291,7 @@
@@ -284,12 +291,13 @@
{ {
EntityTrackerEntry entitytrackerentry1 = (EntityTrackerEntry)iterator1.next(); EntityTrackerEntry entitytrackerentry1 = (EntityTrackerEntry)iterator1.next();
@ -78,13 +75,7 @@
{ {
entitytrackerentry1.tryStartWachingThis(entityplayermp); entitytrackerentry1.tryStartWachingThis(entityplayermp);
} }
} @@ -319,6 +326,7 @@
}
+ ((pw.prok.imagine.collections.Indirect) trackedEntities).compat(theWorld.getTotalWorldTime() % 100 == 0);
}
public void func_151247_a(Entity p_151247_1_, Packet p_151247_2_)
@@ -319,6 +327,7 @@
while (iterator.hasNext()) while (iterator.hasNext())
{ {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry)iterator.next(); EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry)iterator.next();
@ -92,7 +83,7 @@
entitytrackerentry.removePlayerFromTracker(p_72787_1_); entitytrackerentry.removePlayerFromTracker(p_72787_1_);
} }
} }
@@ -331,7 +340,7 @@ @@ -331,7 +339,7 @@
{ {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry)iterator.next(); EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry)iterator.next();

Loading…
Cancel
Save