This commit is contained in:
boy0001 2015-02-05 20:24:07 +11:00
parent c306ae32cc
commit 94de00f278
5 changed files with 25 additions and 17 deletions

View File

@ -74,8 +74,9 @@ public class DebugExec extends SubCommand {
if (world == null) { if (world == null) {
return PlayerFunctions.sendMessage(null, "Invalid world: "+args[1]); return PlayerFunctions.sendMessage(null, "Invalid world: "+args[1]);
} }
PlayerFunctions.sendMessage(null, "Updating expired plot list");
ExpireManager.updateExpired(args[1]); ExpireManager.updateExpired(args[1]);
return PlayerFunctions.sendMessage(null, "Updating expired plot list"); return true;
} }
return PlayerFunctions.sendMessage(null, "Use /plot debugexec update-expired <world>"); return PlayerFunctions.sendMessage(null, "Use /plot debugexec update-expired <world>");
case "show-expired": case "show-expired":

View File

@ -165,15 +165,13 @@ public class Trim extends SubCommand {
} }
} }
final Set<Plot> plots = ExpireManager.getOldPlots(world.getName()).keySet(); final Set<Plot> plots = ExpireManager.getOldPlots(world.getName()).keySet();
int count2 = 0;
Trim.TASK_ID = Bukkit.getScheduler().scheduleSyncRepeatingTask(PlotMain.getMain(), new Runnable() { Trim.TASK_ID = Bukkit.getScheduler().scheduleSyncRepeatingTask(PlotMain.getMain(), new Runnable() {
@Override @Override
public void run() { public void run() {
if (manager != null && plots.size() > 0) { if (manager != null && plots.size() > 0) {
Plot plot = plots.iterator().next(); Plot plot = plots.iterator().next();
boolean modified = false;
if (plot.hasOwner()) { if (plot.hasOwner()) {
modified = HybridPlotManager.checkModified(plot, 0); HybridPlotManager.checkModified(plot, 0);
} }
if (plot.owner == null || !HybridPlotManager.checkModified(plot, plotworld.REQUIRED_CHANGES)) { if (plot.owner == null || !HybridPlotManager.checkModified(plot, plotworld.REQUIRED_CHANGES)) {
PlotMain.removePlot(worldname, plot.id, true); PlotMain.removePlot(worldname, plot.id, true);

View File

@ -118,7 +118,6 @@ public class HybridPop extends BlockPopulator {
@Override @Override
public void populate(final World w, final Random r, final Chunk c) { public void populate(final World w, final Random r, final Chunk c) {
// initializing with bedrock pre-made
int cx = c.getX(), cz = c.getZ(); int cx = c.getX(), cz = c.getZ();
if (doState) { if (doState) {

View File

@ -882,7 +882,7 @@ public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotLi
final Player p = (Player) d; final Player p = (Player) d;
final boolean aPlr = a instanceof Player; final boolean aPlr = a instanceof Player;
final PlotWorld pW = getPlotWorld(l.getWorld()); final PlotWorld pW = getPlotWorld(l.getWorld());
if (!aPlr && pW.PVE && (!(a instanceof ItemFrame))) { if (!aPlr && pW.PVE && (!(a instanceof ItemFrame) && !(a.getEntityId() == 416) ) ) {
return; return;
} else if (aPlr && pW.PVP) { } else if (aPlr && pW.PVP) {
return; return;

View File

@ -1,7 +1,6 @@
package com.intellectualcrafters.plot.util; package com.intellectualcrafters.plot.util;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
@ -24,28 +23,40 @@ import com.intellectualcrafters.plot.object.PlotManager;
public class ExpireManager { public class ExpireManager {
private static long timestamp = 0;
public static ConcurrentHashMap<String, HashMap<Plot, Long>> expiredPlots = new ConcurrentHashMap<>(); public static ConcurrentHashMap<String, HashMap<Plot, Long>> expiredPlots = new ConcurrentHashMap<>();
public static ConcurrentHashMap<String, Boolean> updatingPlots = new ConcurrentHashMap<>(); public static ConcurrentHashMap<String, Boolean> updatingPlots = new ConcurrentHashMap<>();
public static ConcurrentHashMap<String, Long> timestamp = new ConcurrentHashMap<>();
public static int task; public static int task;
public static void updateExpired(final String world) { public static long getTimeStamp(final String world) {
if (timestamp.containsKey(world)) {
return timestamp.get(world);
}
else {
timestamp.put(world, 0l);
return 0;
}
}
public static boolean updateExpired(final String world) {
updatingPlots.put(world, true); updatingPlots.put(world, true);
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (now > timestamp) { if (now > getTimeStamp(world)) {
timestamp = now + 86400000; timestamp.put(world, now + 86400000l);
TaskManager.runTask(new Runnable() { TaskManager.runTask(new Runnable() {
@Override @Override
public void run() { public void run() {
HashMap<Plot, Long> plots = getOldPlots(world); HashMap<Plot, Long> plots = getOldPlots(world);
PlotMain.sendConsoleSenderMessage("&cFound " + plots.size() + " expired plots!"); PlotMain.sendConsoleSenderMessage("&cFound " + plots.size() + " expired plots for " + world + "!");
expiredPlots.put(world, plots); expiredPlots.put(world, plots);
updatingPlots.put(world, false); updatingPlots.put(world, false);
} }
}); });
return true;
} }
else { else {
updatingPlots.put(world, false); updatingPlots.put(world, false);
return false;
} }
} }
@ -67,8 +78,10 @@ public class ExpireManager {
} }
Set<Plot> plots = expiredPlots.get(world).keySet(); Set<Plot> plots = expiredPlots.get(world).keySet();
if (plots == null || plots.size() == 0) { if (plots == null || plots.size() == 0) {
updateExpired(world); if (updateExpired(world)) {
return; return;
}
continue;
} }
Plot plot = plots.iterator().next(); Plot plot = plots.iterator().next();
if (plot.owner != null) { if (plot.owner != null) {
@ -87,14 +100,12 @@ public class ExpireManager {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
for (UUID helper : plot.helpers) { for (UUID helper : plot.helpers) {
Player player = UUIDHandler.uuidWrapper.getPlayer(helper); Player player = UUIDHandler.uuidWrapper.getPlayer(helper);
if (player != null) { if (player != null) {
PlayerFunctions.sendMessage(player, C.PLOT_REMOVED_HELPER, plot.id.toString()); PlayerFunctions.sendMessage(player, C.PLOT_REMOVED_HELPER, plot.id.toString());
} }
} }
final World worldobj = Bukkit.getWorld(world); final World worldobj = Bukkit.getWorld(world);
final PlotManager manager = PlotMain.getPlotManager(world); final PlotManager manager = PlotMain.getPlotManager(world);
manager.clearPlot(worldobj, plot, false); manager.clearPlot(worldobj, plot, false);
@ -112,7 +123,6 @@ public class ExpireManager {
} }
return; return;
} }
} }
}, 2400, 2400); }, 2400, 2400);
} }