This commit is contained in:
Jesse Boyd 2017-04-20 16:54:57 +10:00
parent f0e310da6d
commit a08b68cac4
No known key found for this signature in database
GPG Key ID: 59F1DE6293AF6E1F
3 changed files with 45 additions and 35 deletions

View File

@ -85,7 +85,9 @@ public class RollbackOptimizedHistory extends DiskStorageHistory {
if (super.close()) { if (super.close()) {
// Save to DB // Save to DB
RollbackDatabase db = DBHandler.IMP.getDatabase(getWorld()); RollbackDatabase db = DBHandler.IMP.getDatabase(getWorld());
if (db != null) {
db.logEdit(this); db.logEdit(this);
}
return true; return true;
} }
return false; return false;

View File

@ -256,6 +256,7 @@ public class ForgeChunk_All extends CharFaweChunk<Chunk, ForgeQueue_All> {
getParent().getChangeTask().run(previous, this); getParent().getChangeTask().run(previous, this);
} }
// Trim tiles // Trim tiles
if (!tiles.isEmpty()) {
Set<Map.Entry<BlockPos, TileEntity>> entryset = tiles.entrySet(); Set<Map.Entry<BlockPos, TileEntity>> entryset = tiles.entrySet();
Iterator<Map.Entry<BlockPos, TileEntity>> iterator = entryset.iterator(); Iterator<Map.Entry<BlockPos, TileEntity>> iterator = entryset.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
@ -271,10 +272,13 @@ public class ForgeChunk_All extends CharFaweChunk<Chunk, ForgeQueue_All> {
} }
int k = FaweCache.CACHE_J[ly][lz][lx]; int k = FaweCache.CACHE_J[ly][lz][lx];
if (array[k] != 0) { if (array[k] != 0) {
tile.getValue().invalidate();; synchronized (ForgeChunk_All.class) {
tile.getValue().invalidate();
iterator.remove(); iterator.remove();
} }
} }
}
}
// Efficiently merge sections // Efficiently merge sections
for (int j = 0; j < sections.length; j++) { for (int j = 0; j < sections.length; j++) {
int count = this.getCount(j); int count = this.getCount(j);

View File

@ -256,6 +256,7 @@ public class SpongeChunk_1_11 extends CharFaweChunk<Chunk, SpongeQueue_1_11> {
getParent().getChangeTask().run(previous, this); getParent().getChangeTask().run(previous, this);
} }
// Trim tiles // Trim tiles
if (!tiles.isEmpty()) {
Set<Map.Entry<BlockPos, TileEntity>> entryset = tiles.entrySet(); Set<Map.Entry<BlockPos, TileEntity>> entryset = tiles.entrySet();
Iterator<Map.Entry<BlockPos, TileEntity>> iterator = entryset.iterator(); Iterator<Map.Entry<BlockPos, TileEntity>> iterator = entryset.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
@ -271,10 +272,13 @@ public class SpongeChunk_1_11 extends CharFaweChunk<Chunk, SpongeQueue_1_11> {
} }
int k = FaweCache.CACHE_J[ly][lz][lx]; int k = FaweCache.CACHE_J[ly][lz][lx];
if (array[k] != 0) { if (array[k] != 0) {
tile.getValue().invalidate();; synchronized (SpongeChunk_1_11.class) {
tile.getValue().invalidate();
iterator.remove(); iterator.remove();
} }
} }
}
}
HashSet<UUID> entsToRemove = this.getEntityRemoves(); HashSet<UUID> entsToRemove = this.getEntityRemoves();
if (!entsToRemove.isEmpty()) { if (!entsToRemove.isEmpty()) {
synchronized (SpongeChunk_1_11.class) { synchronized (SpongeChunk_1_11.class) {