Fix plot automerging

This commit is contained in:
boy0001 2015-08-25 00:19:50 +10:00
parent f2d56ec231
commit 3bc3b51a27
2 changed files with 24 additions and 2 deletions

View File

@ -83,6 +83,11 @@ public class SQLManager implements AbstractDB {
*/
public volatile Queue<Runnable> globalTasks;
/**
* Notify tasks
*/
public volatile Queue<Runnable> notifyTasks;
/**
* plot
* plot_denied
@ -107,6 +112,10 @@ public class SQLManager implements AbstractDB {
return globalTasks;
}
public synchronized Queue<Runnable> getNotifyTasks() {
return notifyTasks;
}
public synchronized void addPlotTask(Plot plot, UniqueStatement task) {
if (plot == null) {
plot = new Plot("", new PlotId(Integer.MAX_VALUE, Integer.MAX_VALUE), null);
@ -151,6 +160,12 @@ public class SQLManager implements AbstractDB {
getGlobalTasks().add(task);
}
public synchronized void addNotifyTask(Runnable task) {
if (task != null) {
getNotifyTasks().add(task);
}
}
/**
* Constructor
@ -166,6 +181,7 @@ public class SQLManager implements AbstractDB {
this.connection = database.openConnection();
this.MYSQL = (database instanceof MySQL);
globalTasks = new ConcurrentLinkedQueue<>();
notifyTasks = new ConcurrentLinkedQueue<>();
plotTasks = new ConcurrentHashMap<>();
clusterTasks = new ConcurrentHashMap<>();
TaskManager.runTaskAsync(new Runnable() {
@ -189,6 +205,12 @@ public class SQLManager implements AbstractDB {
}
if (!sendBatch()) {
try {
if (getNotifyTasks().size() > 0) {
for (Runnable task : getNotifyTasks()) {
TaskManager.runTask(task);
}
getNotifyTasks().clear();
}
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
@ -936,6 +958,7 @@ public class SQLManager implements AbstractDB {
return SQLManager.this.connection.prepareStatement("INSERT INTO `" + SQLManager.this.prefix + "plot_settings`(`plot_plot_id`) VALUES(" + "?)");
}
});
addNotifyTask(whenDone);
}
/**

View File

@ -859,6 +859,7 @@ public class MainUtil {
if (count > 16) {
break;
}
merge = false;
count++;
final PlotId bot = getBottomPlot(plot).id;
final PlotId top = getTopPlot(plot).id;
@ -898,10 +899,8 @@ public class MainUtil {
continue;
}
}
merge = false;
}
for (PlotId id : toUpdate) {
Plot update = getPlot(plot.world, id);
DBFunc.setMerged(plot, plot.getSettings().getMerged());
}
}