Plex-FAWE/worldedit-core/src/main/java/com/boydti/fawe/logging/rollback/RollbackOptimizedHistory.java

128 lines
3.0 KiB
Java
Raw Normal View History

package com.boydti.fawe.logging.rollback;
import com.boydti.fawe.Fawe;
import com.boydti.fawe.database.DBHandler;
import com.boydti.fawe.database.RollbackDatabase;
import com.boydti.fawe.object.changeset.DiskStorageHistory;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.world.World;
import java.io.IOException;
import java.io.OutputStream;
import java.util.UUID;
public class RollbackOptimizedHistory extends DiskStorageHistory {
private long time;
private int minX;
private int maxX;
private int minY;
private int maxY;
private int minZ;
private int maxZ;
public RollbackOptimizedHistory(World world, UUID uuid, int index) {
super(world, uuid, index);
this.time = System.currentTimeMillis();
}
public RollbackOptimizedHistory(World world, UUID uuid) {
super(world, uuid);
this.time = System.currentTimeMillis();
}
public RollbackOptimizedHistory(String world, UUID uuid, int index) {
super(world, uuid, index);
this.time = System.currentTimeMillis();
}
public RollbackOptimizedHistory(String world, UUID uuid) {
super(world, uuid);
this.time = System.currentTimeMillis();
}
public long getTime() {
return time;
}
public int getMinX() {
return minX;
}
public int getMaxX() {
return maxX;
}
public int getMinY() {
return minY;
}
public int getMaxY() {
return maxY;
}
public int getMinZ() {
return minZ;
}
public int getMaxZ() {
return maxZ;
}
public void setDimensions(Vector pos1, Vector pos2) {
this.minX = pos1.getBlockX();
this.minY = pos1.getBlockY();
this.minZ = pos1.getBlockZ();
this.maxX = pos2.getBlockX();
this.maxY = pos2.getBlockY();
this.maxZ = pos2.getBlockZ();
}
public void setTime(long time) {
this.time = time;
}
@Override
public boolean close() {
if (super.close()) {
// Save to DB
RollbackDatabase db = DBHandler.IMP.getDatabase(getWorld());
if (db != null) {
db.logEdit(this);
}
return true;
}
return false;
}
@Override
public void add(int x, int y, int z, int combinedFrom, int combinedTo) {
super.add(x, y, z, combinedFrom, combinedTo);
if (x < minX) {
minX = x;
} else if (x > maxX) {
maxX = x;
}
if (y < minY) {
minY = y;
} else if (y > maxY) {
maxY = y;
}
if (z < minZ) {
minZ = z;
} else if (z > maxZ) {
maxZ = z;
}
}
@Override
public void writeHeader(OutputStream os, int x, int y, int z) throws IOException {
minX = x;
maxX = x;
minY = y;
maxY = y;
minZ = z;
maxZ = z;
super.writeHeader(os, x, y, z);
}
}