Various fixes

Fixed issue with augmented plot world and mob / entity interaction
Fixed an issue with async plot diff calculation including upper chunks
outside of plot in result
PlotMeConverter will now try a force  save of the PS configuration right
away
Incremented version number
Tweaked behaviour of plot list command
This commit is contained in:
boy0001 2015-04-03 18:30:27 +11:00
parent c76536b8b0
commit 1c7f7a2dfc
8 changed files with 35 additions and 16 deletions

View File

@ -8,7 +8,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<artifactId>PlotSquared</artifactId>
<version>2.9.4</version>
<version>2.9.5</version>
<name>PlotSquared</name>
<packaging>jar</packaging>
<build>

View File

@ -192,12 +192,18 @@ public class list extends SubCommand {
return false;
}
displayPlots(plr, plots, page);
displayPlots(plr, plots, page, world);
return true;
}
public void displayPlots(PlotPlayer player, Collection<Plot> oldPlots, int page) {
ArrayList<Plot> plots = PlotSquared.sortPlots(oldPlots);
public void displayPlots(PlotPlayer player, Collection<Plot> oldPlots, int page, String world) {
ArrayList<Plot> plots;
if (world != null) {
plots = PlotSquared.sortPlots(oldPlots, world);
}
else {
plots = PlotSquared.sortPlots(oldPlots);
}
if (page < 0) {
page = 0;
}

View File

@ -250,6 +250,7 @@ public class PlotMeConverter {
height = 64;
}
PlotSquared.config.set("worlds." + world + ".road.height", height);
PlotSquared.config.save(PlotSquared.configFile);
} catch (final Exception e) {
sendMessage("&c-- &lFailed to save configuration for world '" + world + "'\nThis will need to be done using the setup command, or manually");
}
@ -300,6 +301,7 @@ public class PlotMeConverter {
PlotSquared.config.set("worlds." + world + ".road.height", height);
PlotSquared.config.set("worlds." + world + ".plot.height", height);
PlotSquared.config.set("worlds." + world + ".wall.height", height);
PlotSquared.config.save(PlotSquared.configFile);
}
} catch (final Exception e) {
}

View File

@ -21,6 +21,7 @@ import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotBlock;
import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.object.RegionWrapper;
import com.intellectualcrafters.plot.object.RunnableVal;
import com.intellectualcrafters.plot.util.ChunkManager;
import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.TaskManager;
@ -29,7 +30,7 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
public class BukkitHybridUtils extends HybridUtils {
public void checkModified(final Plot plot, final int requiredChanges, final Runnable whenDone, final Runnable ifFailed) {
public void checkModified(final Plot plot, final RunnableVal whenDone) {
TaskManager.index.increment();
final Location bot = MainUtil.getPlotBottomLoc(plot.world, plot.id).add(1, 0, 1);
@ -41,7 +42,6 @@ public class BukkitHybridUtils extends HybridUtils {
int tx = top.getX() >> 4;
int tz = top.getZ() >> 4;
int size = (tx-bx) << 4;
World world = BukkitUtil.getWorld(plot.world);
final HashSet<Chunk> chunks = new HashSet<>();
@ -53,6 +53,7 @@ public class BukkitHybridUtils extends HybridUtils {
PlotWorld plotworld = PlotSquared.getPlotWorld(plot.world);
if (!(plotworld instanceof ClassicPlotWorld)) {
whenDone.value = -1;
TaskManager.runTaskLater(whenDone, 1);
return;
}
@ -65,23 +66,19 @@ public class BukkitHybridUtils extends HybridUtils {
final Integer task = TaskManager.runTaskRepeat(new Runnable() {
@Override
public void run() {
if (count.intValue() >= requiredChanges) {
TaskManager.runTaskLater(whenDone, 1);
Bukkit.getScheduler().cancelTask(TaskManager.tasks.get(currentIndex));
TaskManager.tasks.remove(currentIndex);
return;
}
if (chunks.size() == 0) {
TaskManager.runTaskLater(ifFailed, 1);
whenDone.value = 0;
TaskManager.runTaskLater(whenDone, 1);
Bukkit.getScheduler().cancelTask(TaskManager.tasks.get(currentIndex));
TaskManager.tasks.remove(currentIndex);
return;
}
final Chunk chunk = chunks.iterator().next();
chunks.iterator().remove();
int bx = Math.max(chunk.getX() >> 4, bot.getX());
int bz = Math.max(chunk.getZ() >> 4, bot.getZ());
int ex = Math.max((chunk.getX() >> 4) + 15, top.getX());
int ez = Math.max((chunk.getZ() >> 4) + 15, top.getZ());
int ex = Math.min((chunk.getX() >> 4) + 15, top.getX());
int ez = Math.min((chunk.getZ() >> 4) + 15, top.getZ());
// count changes
count.add(checkModified(plot.world, bx, ex, 1, cpw.PLOT_HEIGHT - 1, bz, ez, cpw.MAIN_BLOCK));
count.add(checkModified(plot.world, bx, ex, cpw.PLOT_HEIGHT, cpw.PLOT_HEIGHT, bz, ez, cpw.TOP_BLOCK));

View File

@ -12,6 +12,7 @@ import com.intellectualcrafters.plot.object.PlotBlock;
import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.PlotLoc;
import com.intellectualcrafters.plot.object.PlotManager;
import com.intellectualcrafters.plot.object.RunnableVal;
import com.intellectualcrafters.plot.util.BlockManager;
import com.intellectualcrafters.plot.util.ChunkManager;
import com.intellectualcrafters.plot.util.MainUtil;
@ -21,7 +22,7 @@ public abstract class HybridUtils {
public static HybridUtils manager;
public abstract void checkModified(Plot plot, int requiredChanges, Runnable ifPassed, Runnable ifFailed);
public abstract void checkModified(final Plot plot, final RunnableVal whenDone);
public abstract int checkModified(final String world, final int x1, final int x2, final int y1, final int y2, final int z1, final int z2, final PlotBlock[] blocks);

View File

@ -1060,6 +1060,9 @@ public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotLi
final Player p = e.getPlayer();
final PlotPlayer pp = BukkitUtil.getPlayer(p);
if (!isInPlot(l)) {
if (!isPlotArea(l)) {
return;
}
if (!Permissions.hasPermission(pp, "plots.admin.interact.road")) {
MainUtil.sendMessage(pp, C.NO_PERMISSION, "plots.admin.interact.road");
e.setCancelled(true);

View File

@ -23,6 +23,9 @@ public class PlayerEvents_1_8 extends PlotListener implements Listener {
e.getPlayer();
final PlotPlayer pp = BukkitUtil.getPlayer(e.getPlayer());
if (!isInPlot(l)) {
if (!isPlotArea(l)) {
return;
}
if (!Permissions.hasPermission(pp, "plots.admin.interact.road")) {
MainUtil.sendMessage(pp, C.NO_PERMISSION, "plots.admin.interact.road");
e.setCancelled(true);

View File

@ -0,0 +1,7 @@
package com.intellectualcrafters.plot.object;
public abstract class RunnableVal implements Runnable {
public Object value;
public abstract void run();
}