Skip to content

Commit

Permalink
Ensure TE/E not in previous tick region if multiple add( calls.
Browse files Browse the repository at this point in the history
Signed-off-by: Ross Allan <rallanpcl@gmail.com>
  • Loading branch information
LunNova committed Jun 18, 2013
1 parent 7cec5c5 commit b42905a
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion src/common/nallar/tickthreading/minecraft/TickManager.java
Expand Up @@ -147,7 +147,14 @@ private void processChanges() {
}

public boolean add(TileEntity tileEntity, boolean newEntity) {
TileEntityTickRegion lastTickRegion = tileEntity.tickRegion;
TileEntityTickRegion tileEntityTickRegion = getOrCreateRegion(tileEntity);
if (lastTickRegion != null) {
if (lastTickRegion == tileEntityTickRegion) {
return false;
}
lastTickRegion.remove(tileEntity);
}
if (tileEntityTickRegion.add(tileEntity)) {
tileEntity.tickRegion = tileEntityTickRegion;
if (newEntity) {
Expand All @@ -161,7 +168,14 @@ public boolean add(TileEntity tileEntity, boolean newEntity) {
}

public boolean add(Entity entity, boolean newEntity) {
EntityTickRegion lastTickRegion = entity.tickRegion;
EntityTickRegion entityTickRegion = getOrCreateRegion(entity);
if (lastTickRegion != null) {
if (lastTickRegion == entityTickRegion) {
return false;
}
lastTickRegion.remove(entity);
}
if (entityTickRegion.add(entity)) {
entity.tickRegion = entityTickRegion;
if (newEntity) {
Expand Down Expand Up @@ -232,8 +246,8 @@ public void batchRemoveTileEntities(HashSet<TileEntity> tileEntities) {
for (TileEntity tileEntity : tileEntities) {
TileEntityTickRegion tickRegion = tileEntity.tickRegion;
if (tickRegion != null) {
tickRegion.remove(tileEntity);
tileEntity.tickRegion = null;
tickRegion.remove(tileEntity);
tileEntity.onChunkUnload();
}
unlock(tileEntity);
Expand Down

0 comments on commit b42905a

Please sign in to comment.