mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-06-25 02:04:44 +02:00
Cleanup
This commit is contained in:
@ -10,7 +10,10 @@ import com.github.intellectualsites.plotsquared.plot.object.PlotMessage;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal2;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.*;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.StringComparison;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.StringMan;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.Annotation;
|
||||
@ -47,7 +50,7 @@ public abstract class Command {
|
||||
this.perm = perm;
|
||||
this.required = required;
|
||||
this.category = cat;
|
||||
this.aliases = Arrays.asList(id);
|
||||
this.aliases = Collections.singletonList(id);
|
||||
if (this.parent != null) {
|
||||
this.parent.register(this);
|
||||
}
|
||||
@ -114,12 +117,7 @@ public abstract class Command {
|
||||
public List<Command> getCommands(CommandCategory cat, PlotPlayer player) {
|
||||
List<Command> commands = getCommands(player);
|
||||
if (cat != null) {
|
||||
Iterator<Command> iterator = commands.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
if (iterator.next().category != cat) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
commands.removeIf(command -> command.category != cat);
|
||||
}
|
||||
return commands;
|
||||
}
|
||||
@ -249,8 +247,7 @@ public abstract class Command {
|
||||
}
|
||||
if (page == 0 && totalPages != 0) { // Next
|
||||
new PlotMessage().text("<-").color("$3").text(" | ").color("$3").text("->").color("$1")
|
||||
.command(baseCommand + " " + (0 + 2)).text(C.CLICKABLE.s()).color("$2")
|
||||
.send(player);
|
||||
.command(baseCommand + " " + 2).text(C.CLICKABLE.s()).color("$2").send(player);
|
||||
return;
|
||||
}
|
||||
if (page == totalPages && totalPages != 0) { // Back
|
||||
@ -276,7 +273,7 @@ public abstract class Command {
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (this.allCommands == null || this.allCommands.isEmpty()) {
|
||||
if (this.allCommands.isEmpty()) {
|
||||
player.sendMessage(
|
||||
"Not Implemented: https://github.com/IntellectualSites/PlotSquared/issues/new");
|
||||
return;
|
||||
@ -289,13 +286,10 @@ public abstract class Command {
|
||||
}
|
||||
// Help command
|
||||
try {
|
||||
if (args.length == 0 || MathMan.isInteger(args[0])
|
||||
|| CommandCategory.valueOf(args[0].toUpperCase()) != null) {
|
||||
// This will default certain syntax to the help command
|
||||
// e.g. /plot, /plot 1, /plot claiming
|
||||
MainCommand.getInstance().help.execute(player, args, null, null);
|
||||
return;
|
||||
}
|
||||
// This will default certain syntax to the help command
|
||||
// e.g. /plot, /plot 1, /plot claiming
|
||||
MainCommand.getInstance().help.execute(player, args, null, null);
|
||||
return;
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
}
|
||||
// Command recommendation
|
||||
@ -341,7 +335,6 @@ public abstract class Command {
|
||||
boolean failed = args.length < reqArgs.length;
|
||||
String[] baseSplit = getCommandString().split(" ");
|
||||
String[] fullSplit = getUsage().split(" ");
|
||||
String base = getCommandString();
|
||||
if (fullSplit.length - baseSplit.length < reqArgs.length) {
|
||||
String[] tmp = new String[baseSplit.length + reqArgs.length];
|
||||
System.arraycopy(fullSplit, 0, tmp, 0, fullSplit.length);
|
||||
@ -457,7 +450,6 @@ public abstract class Command {
|
||||
}
|
||||
|
||||
public String getCommandString() {
|
||||
String base;
|
||||
if (this.parent == null) {
|
||||
return "/" + toString();
|
||||
} else {
|
||||
@ -490,7 +482,7 @@ public abstract class Command {
|
||||
return null;
|
||||
}
|
||||
List<Command> result = new ArrayList<>();
|
||||
int index = input.length - (space ? 0 : 1);
|
||||
int index = input.length;
|
||||
for (String arg : args) {
|
||||
arg = arg.replace(getCommandString() + " ", "");
|
||||
String[] split = arg.split(" ");
|
||||
@ -519,7 +511,7 @@ public abstract class Command {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
Set<Command> commands = new HashSet<Command>();
|
||||
Set<Command> commands = new HashSet<>();
|
||||
for (Map.Entry<String, Command> entry : this.staticCommands.entrySet()) {
|
||||
if (entry.getKey().startsWith(arg) && entry.getValue()
|
||||
.canExecute(player, false)) {
|
||||
@ -566,7 +558,7 @@ public abstract class Command {
|
||||
}
|
||||
}
|
||||
|
||||
public <T extends Object> T check(T object, C message, Object... args) {
|
||||
public <T> T check(T object, C message, Object... args) {
|
||||
if (object == null) {
|
||||
throw new CommandException(message, args);
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ public class YamlConfiguration extends FileConfiguration {
|
||||
|
||||
Map<?, ?> input;
|
||||
try {
|
||||
input = (Map<?, ?>) yaml.load(contents);
|
||||
input = yaml.load(contents);
|
||||
} catch (YAMLException e) {
|
||||
throw new InvalidConfigurationException(e);
|
||||
} catch (ClassCastException ignored) {
|
||||
|
File diff suppressed because one or more lines are too long
@ -33,8 +33,8 @@ public class PlotVersion {
|
||||
public static PlotVersion tryParse(String version) {
|
||||
try {
|
||||
return new PlotVersion(version);
|
||||
} catch (Exception ignore) {
|
||||
ignore.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return new PlotVersion(0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
@ -61,21 +61,19 @@ import java.util.UUID;
|
||||
checkTrue(!uuids.isEmpty(), null);
|
||||
checkTrue(size <= plot.getArea().MAX_PLOT_MEMBERS || Permissions
|
||||
.hasPermission(player, C.PERMISSION_ADMIN_COMMAND_TRUST), C.PLOT_MAX_MEMBERS);
|
||||
confirm.run(this, new Runnable() {
|
||||
@Override // Success
|
||||
public void run() {
|
||||
for (UUID uuid : uuids) {
|
||||
if (uuid != DBFunc.EVERYONE) {
|
||||
if (!plot.removeTrusted(uuid)) {
|
||||
if (plot.getDenied().contains(uuid)) {
|
||||
plot.removeDenied(uuid);
|
||||
}
|
||||
// Success
|
||||
confirm.run(this, () -> {
|
||||
for (UUID uuid : uuids) {
|
||||
if (uuid != DBFunc.EVERYONE) {
|
||||
if (!plot.removeTrusted(uuid)) {
|
||||
if (plot.getDenied().contains(uuid)) {
|
||||
plot.removeDenied(uuid);
|
||||
}
|
||||
}
|
||||
plot.addMember(uuid);
|
||||
EventUtil.manager.callMember(player, plot, uuid, true);
|
||||
MainUtil.sendMessage(player, C.MEMBER_ADDED);
|
||||
}
|
||||
plot.addMember(uuid);
|
||||
EventUtil.manager.callMember(player, plot, uuid, true);
|
||||
MainUtil.sendMessage(player, C.MEMBER_ADDED);
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
|
@ -98,42 +98,40 @@ import java.util.Set;
|
||||
object.type = area.TYPE;
|
||||
object.min = new PlotId(1, 1);
|
||||
object.max = new PlotId(numX, numZ);
|
||||
object.plotManager = PlotSquared.imp().getPluginName();
|
||||
object.setupGenerator = PlotSquared.imp().getPluginName();
|
||||
object.plotManager = PlotSquared.get().IMP.getPluginName();
|
||||
object.setupGenerator = PlotSquared.get().IMP.getPluginName();
|
||||
object.step = area.getSettingNodes();
|
||||
final String path =
|
||||
"worlds." + area.worldname + ".areas." + area.id + '-'
|
||||
+ object.min + '-' + object.max;
|
||||
Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
if (offsetX != 0) {
|
||||
PlotSquared.get().worlds
|
||||
.set(path + ".road.offset.x", offsetX);
|
||||
}
|
||||
if (offsetZ != 0) {
|
||||
PlotSquared.get().worlds
|
||||
.set(path + ".road.offset.z", offsetZ);
|
||||
}
|
||||
final String world = SetupUtils.manager.setupWorld(object);
|
||||
if (WorldUtil.IMP.isWorld(world)) {
|
||||
PlotSquared.get().loadWorld(world, null);
|
||||
C.SETUP_FINISHED.send(player);
|
||||
player.teleport(WorldUtil.IMP.getSpawn(world));
|
||||
if (area.TERRAIN != 3) {
|
||||
ChunkManager.largeRegionTask(world, region,
|
||||
new RunnableVal<ChunkLoc>() {
|
||||
@Override public void run(ChunkLoc value) {
|
||||
AugmentedUtils
|
||||
.generate(world, value.x, value.z,
|
||||
null);
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
} else {
|
||||
MainUtil.sendMessage(player,
|
||||
"An error occurred while creating the world: "
|
||||
+ area.worldname);
|
||||
Runnable run = () -> {
|
||||
if (offsetX != 0) {
|
||||
PlotSquared.get().worlds
|
||||
.set(path + ".road.offset.x", offsetX);
|
||||
}
|
||||
if (offsetZ != 0) {
|
||||
PlotSquared.get().worlds
|
||||
.set(path + ".road.offset.z", offsetZ);
|
||||
}
|
||||
final String world = SetupUtils.manager.setupWorld(object);
|
||||
if (WorldUtil.IMP.isWorld(world)) {
|
||||
PlotSquared.get().loadWorld(world, null);
|
||||
C.SETUP_FINISHED.send(player);
|
||||
player.teleport(WorldUtil.IMP.getSpawn(world));
|
||||
if (area.TERRAIN != 3) {
|
||||
ChunkManager.largeRegionTask(world, region,
|
||||
new RunnableVal<ChunkLoc>() {
|
||||
@Override public void run(ChunkLoc value) {
|
||||
AugmentedUtils
|
||||
.generate(world, value.x, value.z,
|
||||
null);
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
} else {
|
||||
MainUtil.sendMessage(player,
|
||||
"An error occurred while creating the world: "
|
||||
+ area.worldname);
|
||||
}
|
||||
};
|
||||
if (hasConfirmation(player)) {
|
||||
@ -228,32 +226,30 @@ import java.util.Set;
|
||||
C.SETUP_WORLD_TAKEN.send(player, pa.worldname);
|
||||
return false;
|
||||
}
|
||||
Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
String path = "worlds." + pa.worldname;
|
||||
if (!PlotSquared.get().worlds.contains(path)) {
|
||||
PlotSquared.get().worlds.createSection(path);
|
||||
}
|
||||
ConfigurationSection section =
|
||||
PlotSquared.get().worlds.getConfigurationSection(path);
|
||||
pa.saveConfiguration(section);
|
||||
pa.loadConfiguration(section);
|
||||
object.plotManager = PlotSquared.imp().getPluginName();
|
||||
object.setupGenerator = PlotSquared.imp().getPluginName();
|
||||
String world = SetupUtils.manager.setupWorld(object);
|
||||
if (WorldUtil.IMP.isWorld(world)) {
|
||||
C.SETUP_FINISHED.send(player);
|
||||
player.teleport(WorldUtil.IMP.getSpawn(world));
|
||||
} else {
|
||||
MainUtil.sendMessage(player,
|
||||
"An error occurred while creating the world: "
|
||||
+ pa.worldname);
|
||||
}
|
||||
try {
|
||||
PlotSquared.get().worlds.save(PlotSquared.get().worldsFile);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Runnable run = () -> {
|
||||
String path = "worlds." + pa.worldname;
|
||||
if (!PlotSquared.get().worlds.contains(path)) {
|
||||
PlotSquared.get().worlds.createSection(path);
|
||||
}
|
||||
ConfigurationSection section =
|
||||
PlotSquared.get().worlds.getConfigurationSection(path);
|
||||
pa.saveConfiguration(section);
|
||||
pa.loadConfiguration(section);
|
||||
object.plotManager = PlotSquared.get().IMP.getPluginName();
|
||||
object.setupGenerator = PlotSquared.get().IMP.getPluginName();
|
||||
String world = SetupUtils.manager.setupWorld(object);
|
||||
if (WorldUtil.IMP.isWorld(world)) {
|
||||
C.SETUP_FINISHED.send(player);
|
||||
player.teleport(WorldUtil.IMP.getSpawn(world));
|
||||
} else {
|
||||
MainUtil.sendMessage(player,
|
||||
"An error occurred while creating the world: "
|
||||
+ pa.worldname);
|
||||
}
|
||||
try {
|
||||
PlotSquared.get().worlds.save(PlotSquared.get().worldsFile);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
};
|
||||
if (hasConfirmation(player)) {
|
||||
@ -422,11 +418,7 @@ import java.util.Set;
|
||||
@Override public void run(ChunkLoc value) {
|
||||
AugmentedUtils.generate(area.worldname, value.x, value.z, null);
|
||||
}
|
||||
}, new Runnable() {
|
||||
@Override public void run() {
|
||||
player.sendMessage("Regen complete");
|
||||
}
|
||||
});
|
||||
}, () -> player.sendMessage("Regen complete"));
|
||||
return true;
|
||||
}
|
||||
case "goto":
|
||||
@ -464,7 +456,7 @@ import java.util.Set;
|
||||
case "remove":
|
||||
MainUtil.sendMessage(player,
|
||||
"$1World creation settings may be stored in multiple locations:"
|
||||
+ "\n$3 - $2Bukkit bukkit.yml" + "\n$3 - $2" + PlotSquared.imp()
|
||||
+ "\n$3 - $2Bukkit bukkit.yml" + "\n$3 - $2" + PlotSquared.get().IMP
|
||||
.getPluginName() + " settings.yml"
|
||||
+ "\n$3 - $2Multiverse worlds.yml (or any world management plugin)"
|
||||
+ "\n$1Stop the server and delete it from these locations.");
|
||||
|
@ -16,10 +16,6 @@ import java.util.Set;
|
||||
description = "Claim the nearest plot", aliases = "a", usage = "/plot auto [length,width]")
|
||||
public class Auto extends SubCommand {
|
||||
|
||||
@Deprecated public static PlotId getNextPlotId(PlotId id, int step) {
|
||||
return id.getNextId(step);
|
||||
}
|
||||
|
||||
private static boolean checkAllowedPlots(PlotPlayer player, PlotArea plotarea,
|
||||
@Nullable Integer allowed_plots, int size_x, int size_z) {
|
||||
if (allowed_plots == null)
|
||||
@ -128,12 +124,9 @@ public class Auto extends SubCommand {
|
||||
return;
|
||||
}
|
||||
whenDone.value = plot;
|
||||
plot.owner = player.getUUID();
|
||||
DBFunc.createPlotSafe(plot, whenDone, new Runnable() {
|
||||
@Override public void run() {
|
||||
autoClaimFromDatabase(player, area, plot.getId(), whenDone);
|
||||
}
|
||||
});
|
||||
plot.setOwner(player.getUUID());
|
||||
DBFunc.createPlotSafe(plot, whenDone,
|
||||
() -> autoClaimFromDatabase(player, area, plot.getId(), whenDone));
|
||||
}
|
||||
|
||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||
|
@ -27,11 +27,9 @@ import com.github.intellectualsites.plotsquared.plot.util.WorldUtil;
|
||||
return false;
|
||||
}
|
||||
plot.addRunning();
|
||||
plot.setBiome(value.toUpperCase(), new Runnable() {
|
||||
@Override public void run() {
|
||||
plot.removeRunning();
|
||||
MainUtil.sendMessage(player, C.BIOME_SET_TO.s() + value.toLowerCase());
|
||||
}
|
||||
plot.setBiome(value.toUpperCase(), () -> {
|
||||
plot.removeRunning();
|
||||
MainUtil.sendMessage(player, C.BIOME_SET_TO.s() + value.toLowerCase());
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
@ -46,27 +46,24 @@ import java.util.Set;
|
||||
final double price = flag.get();
|
||||
checkTrue(player.getMoney() >= price, C.CANNOT_AFFORD_PLOT);
|
||||
player.withdraw(price);
|
||||
confirm.run(this, new Runnable() {
|
||||
@Override // Success
|
||||
public void run() {
|
||||
C.REMOVED_BALANCE.send(player, price);
|
||||
EconHandler.manager
|
||||
.depositMoney(UUIDHandler.getUUIDWrapper().getOfflinePlayer(plot.owner), price);
|
||||
PlotPlayer owner = UUIDHandler.getPlayer(plot.owner);
|
||||
if (owner != null) {
|
||||
C.PLOT_SOLD.send(owner, plot.getId(), player.getName(), price);
|
||||
}
|
||||
plot.removeFlag(Flags.PRICE);
|
||||
plot.setOwner(player.getUUID());
|
||||
C.CLAIMED.send(player);
|
||||
whenDone.run(Buy.this, CommandResult.SUCCESS);
|
||||
}
|
||||
}, new Runnable() {
|
||||
@Override // Failure
|
||||
public void run() {
|
||||
player.deposit(price);
|
||||
whenDone.run(Buy.this, CommandResult.FAILURE);
|
||||
// Failure
|
||||
// Success
|
||||
confirm.run(this, () -> {
|
||||
C.REMOVED_BALANCE.send(player, price);
|
||||
EconHandler.manager
|
||||
.depositMoney(UUIDHandler.getUUIDWrapper().getOfflinePlayer(plot.guessOwner()),
|
||||
price);
|
||||
PlotPlayer owner = UUIDHandler.getPlayer(plot.guessOwner());
|
||||
if (owner != null) {
|
||||
C.PLOT_SOLD.send(owner, plot.getId(), player.getName(), price);
|
||||
}
|
||||
plot.removeFlag(Flags.PRICE);
|
||||
plot.setOwner(player.getUUID());
|
||||
C.CLAIMED.send(player);
|
||||
whenDone.run(Buy.this, CommandResult.SUCCESS);
|
||||
}, () -> {
|
||||
player.deposit(price);
|
||||
whenDone.run(Buy.this, CommandResult.FAILURE);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -80,24 +80,16 @@ public class Claim extends SubCommand {
|
||||
sendMessage(player, C.REMOVED_GRANTED_PLOT, "1", "" + (grants - 1));
|
||||
}
|
||||
if (plot.canClaim(player)) {
|
||||
plot.owner = player.getUUID();
|
||||
plot.setOwner(player.getUUID());
|
||||
final String finalSchematic = schematic;
|
||||
DBFunc.createPlotSafe(plot, new Runnable() {
|
||||
@Override public void run() {
|
||||
TaskManager.IMP.sync(new RunnableVal<Object>() {
|
||||
@Override public void run(Object value) {
|
||||
plot.claim(player, true, finalSchematic, false);
|
||||
if (area.AUTO_MERGE) {
|
||||
plot.autoMerge(-1, Integer.MAX_VALUE, player.getUUID(), true);
|
||||
}
|
||||
}
|
||||
});
|
||||
DBFunc.createPlotSafe(plot, () -> TaskManager.IMP.sync(new RunnableVal<Object>() {
|
||||
@Override public void run(Object value) {
|
||||
plot.claim(player, true, finalSchematic, false);
|
||||
if (area.AUTO_MERGE) {
|
||||
plot.autoMerge(-1, Integer.MAX_VALUE, player.getUUID(), true);
|
||||
}
|
||||
}
|
||||
}, new Runnable() {
|
||||
@Override public void run() {
|
||||
sendMessage(player, C.PLOT_NOT_CLAIMED);
|
||||
}
|
||||
});
|
||||
}), () -> sendMessage(player, C.PLOT_NOT_CLAIMED));
|
||||
return true;
|
||||
} else {
|
||||
sendMessage(player, C.PLOT_NOT_CLAIMED);
|
||||
|
@ -35,33 +35,27 @@ import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue
|
||||
checkTrue(plot.getRunning() == 0, C.WAIT_FOR_TIMER);
|
||||
checkTrue(!Settings.Done.RESTRICT_BUILDING || !Flags.DONE.isSet(plot) || Permissions
|
||||
.hasPermission(player, C.PERMISSION_CONTINUE), C.DONE_ALREADY_DONE);
|
||||
confirm.run(this, new Runnable() {
|
||||
@Override public void run() {
|
||||
final long start = System.currentTimeMillis();
|
||||
boolean result = plot.clear(true, false, new Runnable() {
|
||||
@Override public void run() {
|
||||
plot.unlink();
|
||||
GlobalBlockQueue.IMP.addTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
plot.removeRunning();
|
||||
// If the state changes, then mark it as no longer done
|
||||
if (plot.getFlag(Flags.DONE).isPresent()) {
|
||||
FlagManager.removePlotFlag(plot, Flags.DONE);
|
||||
}
|
||||
if (plot.getFlag(Flags.ANALYSIS).isPresent()) {
|
||||
FlagManager.removePlotFlag(plot, Flags.ANALYSIS);
|
||||
}
|
||||
MainUtil.sendMessage(player, C.CLEARING_DONE,
|
||||
"" + (System.currentTimeMillis() - start));
|
||||
}
|
||||
});
|
||||
confirm.run(this, () -> {
|
||||
final long start = System.currentTimeMillis();
|
||||
boolean result = plot.clear(true, false, () -> {
|
||||
plot.unlink();
|
||||
GlobalBlockQueue.IMP.addTask(() -> {
|
||||
plot.removeRunning();
|
||||
// If the state changes, then mark it as no longer done
|
||||
if (plot.getFlag(Flags.DONE).isPresent()) {
|
||||
FlagManager.removePlotFlag(plot, Flags.DONE);
|
||||
}
|
||||
if (plot.getFlag(Flags.ANALYSIS).isPresent()) {
|
||||
FlagManager.removePlotFlag(plot, Flags.ANALYSIS);
|
||||
}
|
||||
MainUtil.sendMessage(player, C.CLEARING_DONE,
|
||||
"" + (System.currentTimeMillis() - start));
|
||||
});
|
||||
if (!result) {
|
||||
MainUtil.sendMessage(player, C.WAIT_FOR_TIMER);
|
||||
} else {
|
||||
plot.addRunning();
|
||||
}
|
||||
});
|
||||
if (!result) {
|
||||
MainUtil.sendMessage(player, C.WAIT_FOR_TIMER);
|
||||
} else {
|
||||
plot.addRunning();
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
|
@ -148,9 +148,9 @@ import java.util.UUID;
|
||||
// Add any existing plots to the current cluster
|
||||
for (Plot plot : plots) {
|
||||
if (plot.hasOwner()) {
|
||||
if (!cluster.isAdded(plot.owner)) {
|
||||
cluster.invited.add(plot.owner);
|
||||
DBFunc.setInvited(cluster, plot.owner);
|
||||
if (!cluster.isAdded(plot.guessOwner())) {
|
||||
cluster.invited.add(plot.guessOwner());
|
||||
DBFunc.setInvited(cluster, plot.guessOwner());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
if (plot != null && !plot.hasOwner()) {
|
||||
free.add(plot.getId());
|
||||
}
|
||||
start = Auto.getNextPlotId(start, 1);
|
||||
start = start.getNextId(1);
|
||||
}
|
||||
if (free.isEmpty() || toMove.isEmpty()) {
|
||||
MainUtil.sendMessage(player, "NO FREE PLOTS FOUND");
|
||||
@ -126,13 +126,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
}
|
||||
i++;
|
||||
final AtomicBoolean result = new AtomicBoolean(false);
|
||||
result.set(origin.move(possible, new Runnable() {
|
||||
@Override public void run() {
|
||||
if (result.get()) {
|
||||
MainUtil.sendMessage(player,
|
||||
"Moving: " + origin + " -> " + possible);
|
||||
TaskManager.runTaskLater(task, 1);
|
||||
}
|
||||
result.set(origin.move(possible, () -> {
|
||||
if (result.get()) {
|
||||
MainUtil.sendMessage(player,
|
||||
"Moving: " + origin + " -> " + possible);
|
||||
TaskManager.runTaskLater(task, 1);
|
||||
}
|
||||
}, false));
|
||||
if (result.get()) {
|
||||
|
@ -40,11 +40,7 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
||||
C.PLOTWORLD_INCOMPATIBLE.send(player);
|
||||
return false;
|
||||
}
|
||||
if (plot1.copy(plot2, new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, C.COPY_SUCCESS);
|
||||
}
|
||||
})) {
|
||||
if (plot1.copy(plot2, () -> MainUtil.sendMessage(player, C.COPY_SUCCESS))) {
|
||||
return true;
|
||||
} else {
|
||||
MainUtil.sendMessage(player, C.REQUIRES_UNOWNED);
|
||||
|
@ -30,25 +30,18 @@ import java.util.Map.Entry;
|
||||
|
||||
public static void insertPlots(final SQLManager manager, final List<Plot> plots,
|
||||
final PlotPlayer player) {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
try {
|
||||
ArrayList<Plot> ps = new ArrayList<>();
|
||||
for (Plot p : plots) {
|
||||
ps.add(p);
|
||||
}
|
||||
MainUtil.sendMessage(player, "&6Starting...");
|
||||
manager.createPlotsAndData(ps, new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, "&6Database conversion finished!");
|
||||
manager.close();
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
MainUtil.sendMessage(player,
|
||||
"Failed to insert plot objects, see stacktrace for info");
|
||||
e.printStackTrace();
|
||||
}
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
try {
|
||||
ArrayList<Plot> ps = new ArrayList<>(plots);
|
||||
MainUtil.sendMessage(player, "&6Starting...");
|
||||
manager.createPlotsAndData(ps, () -> {
|
||||
MainUtil.sendMessage(player, "&6Database conversion finished!");
|
||||
manager.close();
|
||||
});
|
||||
} catch (Exception e) {
|
||||
MainUtil
|
||||
.sendMessage(player, "Failed to insert plot objects, see stacktrace for info");
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -106,12 +99,12 @@ import java.util.Map.Entry;
|
||||
PlotId newId = newPlot.getId();
|
||||
PlotId id = plot.getId();
|
||||
File worldFile =
|
||||
new File(PlotSquared.imp().getWorldContainer(),
|
||||
new File(PlotSquared.get().IMP.getWorldContainer(),
|
||||
id.toCommaSeparatedString());
|
||||
if (worldFile.exists()) {
|
||||
File newFile =
|
||||
new File(PlotSquared.imp().getWorldContainer(),
|
||||
newId.toCommaSeparatedString());
|
||||
File newFile = new File(
|
||||
PlotSquared.get().IMP.getWorldContainer(),
|
||||
newId.toCommaSeparatedString());
|
||||
worldFile.renameTo(newFile);
|
||||
}
|
||||
id.x = newId.x;
|
||||
@ -130,20 +123,13 @@ import java.util.Map.Entry;
|
||||
plots.add(plot);
|
||||
}
|
||||
} else {
|
||||
HashMap<PlotId, Plot> plotmap =
|
||||
PlotSquared.get().plots_tmp.get(areaname);
|
||||
if (plotmap == null) {
|
||||
plotmap = new HashMap<>();
|
||||
PlotSquared.get().plots_tmp.put(areaname, plotmap);
|
||||
}
|
||||
HashMap<PlotId, Plot> plotmap = PlotSquared.get().plots_tmp
|
||||
.computeIfAbsent(areaname, k -> new HashMap<>());
|
||||
plotmap.putAll(entry.getValue());
|
||||
}
|
||||
}
|
||||
DBFunc.createPlotsAndData(plots, new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, "&6Database conversion finished!");
|
||||
}
|
||||
});
|
||||
DBFunc.createPlotsAndData(plots,
|
||||
() -> MainUtil.sendMessage(player, "&6Database conversion finished!"));
|
||||
return true;
|
||||
case "mysql":
|
||||
if (args.length < 6) {
|
||||
|
@ -34,8 +34,6 @@ public class DebugClaimTest extends SubCommand {
|
||||
}
|
||||
PlotId min, max;
|
||||
try {
|
||||
args[1].split(";");
|
||||
args[2].split(";");
|
||||
min = PlotId.fromString(args[1]);
|
||||
max = PlotId.fromString(args[2]);
|
||||
} catch (Exception ignored) {
|
||||
@ -96,11 +94,8 @@ public class DebugClaimTest extends SubCommand {
|
||||
if (!plots.isEmpty()) {
|
||||
MainUtil.sendMessage(player,
|
||||
"&3Sign Block&8->&3Plot&8: &7Updating '" + plots.size() + "' plots!");
|
||||
DBFunc.createPlotsAndData(plots, new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, "&6Database update finished!");
|
||||
}
|
||||
});
|
||||
DBFunc.createPlotsAndData(plots,
|
||||
() -> MainUtil.sendMessage(player, "&6Database update finished!"));
|
||||
for (Plot plot : plots) {
|
||||
plot.create();
|
||||
}
|
||||
|
@ -46,8 +46,8 @@ import java.util.*;
|
||||
this.engine.eval(script, this.scope);
|
||||
}
|
||||
}
|
||||
} catch (IOException | ScriptException ignored) {
|
||||
ignored.printStackTrace();
|
||||
} catch (IOException | ScriptException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,11 +164,8 @@ import java.util.*;
|
||||
"$1<threshold> $2= $1The percentage of plots you want to clear as a number between 0 - 100");
|
||||
return false;
|
||||
}
|
||||
PlotAnalysis.calcOptimalModifiers(new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, "$1Thank you for calibrating plot expiry");
|
||||
}
|
||||
}, threshold);
|
||||
PlotAnalysis.calcOptimalModifiers(() -> MainUtil
|
||||
.sendMessage(player, "$1Thank you for calibrating plot expiry"), threshold);
|
||||
return true;
|
||||
case "stop-expire":
|
||||
if (ExpireManager.IMP == null || !ExpireManager.IMP.cancelTask()) {
|
||||
@ -404,18 +401,16 @@ import java.util.*;
|
||||
try {
|
||||
if (async) {
|
||||
final String toExec = script;
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
long start = System.currentTimeMillis();
|
||||
Object result = null;
|
||||
try {
|
||||
result = DebugExec.this.engine.eval(toExec, DebugExec.this.scope);
|
||||
} catch (ScriptException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
PlotSquared.log(
|
||||
"> " + (System.currentTimeMillis() - start) + "ms -> " + result);
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
long start = System.currentTimeMillis();
|
||||
Object result = null;
|
||||
try {
|
||||
result = DebugExec.this.engine.eval(toExec, DebugExec.this.scope);
|
||||
} catch (ScriptException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
PlotSquared
|
||||
.log("> " + (System.currentTimeMillis() - start) + "ms -> " + result);
|
||||
});
|
||||
} else {
|
||||
long start = System.currentTimeMillis();
|
||||
|
@ -35,7 +35,7 @@ import java.util.UUID;
|
||||
}
|
||||
SinglePlotArea area = ((SinglePlotAreaManager) pam).getArea();
|
||||
PlotId id = new PlotId(0, 0);
|
||||
File container = PlotSquared.imp().getWorldContainer();
|
||||
File container = PlotSquared.get().IMP.getWorldContainer();
|
||||
for (File folder : container.listFiles()) {
|
||||
String name = folder.getName();
|
||||
if (!WorldUtil.IMP.isWorld(name) && PlotId.fromString(name) == null) {
|
||||
@ -45,7 +45,7 @@ import java.util.UUID;
|
||||
UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(Charsets.UTF_8));
|
||||
}
|
||||
while (new File(container, id.toCommaSeparatedString()).exists()) {
|
||||
id = Auto.getNextPlotId(id, 1);
|
||||
id = id.getNextId(1);
|
||||
}
|
||||
File newDir = new File(container, id.toCommaSeparatedString());
|
||||
if (folder.renameTo(newDir)) {
|
||||
|
@ -19,69 +19,64 @@ import java.io.IOException;
|
||||
extends SubCommand {
|
||||
|
||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
try {
|
||||
String settingsYML = HastebinUtility.upload(PlotSquared.get().configFile);
|
||||
String worldsYML = HastebinUtility.upload(PlotSquared.get().worldsFile);
|
||||
String commandsYML = HastebinUtility.upload(PlotSquared.get().commandsFile);
|
||||
String latestLOG;
|
||||
try {
|
||||
String settingsYML = HastebinUtility.upload(PlotSquared.get().configFile);
|
||||
String worldsYML = HastebinUtility.upload(PlotSquared.get().worldsFile);
|
||||
String commandsYML = HastebinUtility.upload(PlotSquared.get().commandsFile);
|
||||
String latestLOG;
|
||||
try {
|
||||
latestLOG = HastebinUtility.upload(
|
||||
new File(PlotSquared.get().IMP.getDirectory(),
|
||||
"../../logs/latest.log"));
|
||||
} catch (IOException ignored) {
|
||||
MainUtil.sendMessage(player,
|
||||
"&clatest.log is too big to be pasted, will ignore");
|
||||
latestLOG = "too big :(";
|
||||
}
|
||||
StringBuilder b = new StringBuilder();
|
||||
b.append(
|
||||
"# Welcome to this paste\n# It is meant to provide us at IntellectualSites with better information about your "
|
||||
+ "problem\n\n# We will start with some informational files\n");
|
||||
b.append("links.settings_yml: ").append(settingsYML).append('\n');
|
||||
b.append("links.worlds_yml: ").append(worldsYML).append('\n');
|
||||
b.append("links.commands_yml: ").append(commandsYML).append('\n');
|
||||
b.append("links.latest_log: ").append(latestLOG).append('\n');
|
||||
b.append("\n# Server Information\n");
|
||||
int[] sVersion = PlotSquared.get().IMP.getServerVersion();
|
||||
b.append("version.server: ").append(sVersion[0]).append('.').append(sVersion[1])
|
||||
.append('.').append(sVersion[2]).append('\n');
|
||||
b.append("online_mode: ").append(UUIDHandler.getUUIDWrapper()).append(';')
|
||||
.append(!Settings.UUID.OFFLINE).append('\n');
|
||||
b.append("plugins:");
|
||||
for (String id : PlotSquared.get().IMP.getPluginIds()) {
|
||||
String[] split = id.split(":");
|
||||
String[] split2 = split[0].split(";");
|
||||
String enabled = split.length == 2 ? split[1] : "unknown";
|
||||
String name = split2[0];
|
||||
String version = split2.length == 2 ? split2[1] : "unknown";
|
||||
b.append("\n ").append(name).append(":\n ").append("version: '")
|
||||
.append(version).append('\'').append("\n enabled: ").append(enabled);
|
||||
}
|
||||
b.append("\n\n# YAY! Now, let's see what we can find in your JVM\n");
|
||||
Runtime runtime = Runtime.getRuntime();
|
||||
b.append("memory.free: ").append(runtime.freeMemory()).append('\n');
|
||||
b.append("memory.max: ").append(runtime.maxMemory()).append('\n');
|
||||
b.append("java.specification.version: '")
|
||||
.append(System.getProperty("java.specification.version")).append("'\n");
|
||||
b.append("java.vendor: '").append(System.getProperty("java.vendor"))
|
||||
.append("'\n");
|
||||
b.append("java.version: '").append(System.getProperty("java.version"))
|
||||
.append("'\n");
|
||||
b.append("os.arch: '").append(System.getProperty("os.arch")).append("'\n");
|
||||
b.append("os.name: '").append(System.getProperty("os.name")).append("'\n");
|
||||
b.append("os.version: '").append(System.getProperty("os.version"))
|
||||
.append("'\n\n");
|
||||
b.append("# Okay :D Great. You are now ready to create your bug report!");
|
||||
b.append(
|
||||
"\n# You can do so at https://github.com/IntellectualSites/PlotSquared/issues");
|
||||
|
||||
String link = HastebinUtility.upload(b.toString());
|
||||
player.sendMessage(C.DEBUG_REPORT_CREATED.s().replace("%url%", link));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
latestLOG = HastebinUtility.upload(
|
||||
new File(PlotSquared.get().IMP.getDirectory(), "../../logs/latest.log"));
|
||||
} catch (IOException ignored) {
|
||||
MainUtil
|
||||
.sendMessage(player, "&clatest.log is too big to be pasted, will ignore");
|
||||
latestLOG = "too big :(";
|
||||
}
|
||||
StringBuilder b = new StringBuilder();
|
||||
b.append(
|
||||
"# Welcome to this paste\n# It is meant to provide us at IntellectualSites with better information about your "
|
||||
+ "problem\n\n# We will start with some informational files\n");
|
||||
b.append("links.settings_yml: ").append(settingsYML).append('\n');
|
||||
b.append("links.worlds_yml: ").append(worldsYML).append('\n');
|
||||
b.append("links.commands_yml: ").append(commandsYML).append('\n');
|
||||
b.append("links.latest_log: ").append(latestLOG).append('\n');
|
||||
b.append("\n# Server Information\n");
|
||||
int[] sVersion = PlotSquared.get().IMP.getServerVersion();
|
||||
b.append("version.server: ").append(sVersion[0]).append('.').append(sVersion[1])
|
||||
.append('.').append(sVersion[2]).append('\n');
|
||||
b.append("online_mode: ").append(UUIDHandler.getUUIDWrapper()).append(';')
|
||||
.append(!Settings.UUID.OFFLINE).append('\n');
|
||||
b.append("plugins:");
|
||||
for (String id : PlotSquared.get().IMP.getPluginIds()) {
|
||||
String[] split = id.split(":");
|
||||
String[] split2 = split[0].split(";");
|
||||
String enabled = split.length == 2 ? split[1] : "unknown";
|
||||
String name = split2[0];
|
||||
String version = split2.length == 2 ? split2[1] : "unknown";
|
||||
b.append("\n ").append(name).append(":\n ").append("version: '")
|
||||
.append(version).append('\'').append("\n enabled: ").append(enabled);
|
||||
}
|
||||
b.append("\n\n# YAY! Now, let's see what we can find in your JVM\n");
|
||||
Runtime runtime = Runtime.getRuntime();
|
||||
b.append("memory.free: ").append(runtime.freeMemory()).append('\n');
|
||||
b.append("memory.max: ").append(runtime.maxMemory()).append('\n');
|
||||
b.append("java.specification.version: '")
|
||||
.append(System.getProperty("java.specification.version")).append("'\n");
|
||||
b.append("java.vendor: '").append(System.getProperty("java.vendor")).append("'\n");
|
||||
b.append("java.version: '").append(System.getProperty("java.version"))
|
||||
.append("'\n");
|
||||
b.append("os.arch: '").append(System.getProperty("os.arch")).append("'\n");
|
||||
b.append("os.name: '").append(System.getProperty("os.name")).append("'\n");
|
||||
b.append("os.version: '").append(System.getProperty("os.version")).append("'\n\n");
|
||||
b.append("# Okay :D Great. You are now ready to create your bug report!");
|
||||
b.append(
|
||||
"\n# You can do so at https://github.com/IntellectualSites/PlotSquared/issues");
|
||||
|
||||
String link = HastebinUtility.upload(b.toString());
|
||||
player.sendMessage(C.DEBUG_REPORT_CREATED.s().replace("%url%", link));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
return true;
|
||||
|
@ -16,14 +16,10 @@ import java.util.ArrayList;
|
||||
public class DebugSaveTest extends SubCommand {
|
||||
|
||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||
ArrayList<Plot> plots = new ArrayList<Plot>();
|
||||
plots.addAll(PlotSquared.get().getPlots());
|
||||
ArrayList<Plot> plots = new ArrayList<>(PlotSquared.get().getPlots());
|
||||
MainUtil.sendMessage(player, "&6Starting `DEBUGSAVETEST`");
|
||||
DBFunc.createPlotsAndData(plots, new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, "&6Database sync finished!");
|
||||
}
|
||||
});
|
||||
DBFunc.createPlotsAndData(plots,
|
||||
() -> MainUtil.sendMessage(player, "&6Database sync finished!"));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -33,33 +33,28 @@ import com.github.intellectualsites.plotsquared.plot.util.*;
|
||||
final java.util.Set<Plot> plots = plot.getConnectedPlots();
|
||||
final int currentPlots =
|
||||
Settings.Limit.GLOBAL ? player.getPlotCount() : player.getPlotCount(loc.getWorld());
|
||||
Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
if (plot.getRunning() > 0) {
|
||||
MainUtil.sendMessage(player, C.WAIT_FOR_TIMER);
|
||||
return;
|
||||
}
|
||||
final long start = System.currentTimeMillis();
|
||||
boolean result = plot.deletePlot(new Runnable() {
|
||||
@Override public void run() {
|
||||
plot.removeRunning();
|
||||
if ((EconHandler.manager != null) && plotArea.USE_ECONOMY) {
|
||||
Expression<Double> valueExr = plotArea.PRICES.get("sell");
|
||||
double value = plots.size() * valueExr.evaluate((double) currentPlots);
|
||||
if (value > 0d) {
|
||||
EconHandler.manager.depositMoney(player, value);
|
||||
sendMessage(player, C.ADDED_BALANCE, String.valueOf(value));
|
||||
}
|
||||
}
|
||||
MainUtil.sendMessage(player, C.DELETING_DONE,
|
||||
System.currentTimeMillis() - start);
|
||||
Runnable run = () -> {
|
||||
if (plot.getRunning() > 0) {
|
||||
MainUtil.sendMessage(player, C.WAIT_FOR_TIMER);
|
||||
return;
|
||||
}
|
||||
final long start = System.currentTimeMillis();
|
||||
boolean result = plot.deletePlot(() -> {
|
||||
plot.removeRunning();
|
||||
if ((EconHandler.manager != null) && plotArea.USE_ECONOMY) {
|
||||
Expression<Double> valueExr = plotArea.PRICES.get("sell");
|
||||
double value = plots.size() * valueExr.evaluate((double) currentPlots);
|
||||
if (value > 0d) {
|
||||
EconHandler.manager.depositMoney(player, value);
|
||||
sendMessage(player, C.ADDED_BALANCE, String.valueOf(value));
|
||||
}
|
||||
});
|
||||
if (result) {
|
||||
plot.addRunning();
|
||||
} else {
|
||||
MainUtil.sendMessage(player, C.WAIT_FOR_TIMER);
|
||||
}
|
||||
MainUtil.sendMessage(player, C.DELETING_DONE, System.currentTimeMillis() - start);
|
||||
});
|
||||
if (result) {
|
||||
plot.addRunning();
|
||||
} else {
|
||||
MainUtil.sendMessage(player, C.WAIT_FOR_TIMER);
|
||||
}
|
||||
};
|
||||
if (hasConfirmation(player)) {
|
||||
|
@ -10,7 +10,6 @@ import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.*;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
@ -44,9 +43,7 @@ import java.util.UUID;
|
||||
MainUtil.sendMessage(player, C.INVALID_PLAYER, args[0]);
|
||||
return false;
|
||||
}
|
||||
Iterator<UUID> iter = uuids.iterator();
|
||||
while (iter.hasNext()) {
|
||||
UUID uuid = iter.next();
|
||||
for (UUID uuid : uuids) {
|
||||
if (uuid == DBFunc.EVERYONE && !(
|
||||
Permissions.hasPermission(player, C.PERMISSION_DENY_EVERYONE) || Permissions
|
||||
.hasPermission(player, C.PERMISSION_ADMIN_COMMAND_DENY))) {
|
||||
|
@ -247,20 +247,21 @@ import java.util.*;
|
||||
for (Flag<?> flag1 : Flags.getFlags()) {
|
||||
String type = flag1.getClass().getSimpleName();
|
||||
if (!flags.containsKey(type)) {
|
||||
flags.put(type, new ArrayList<String>());
|
||||
flags.put(type, new ArrayList<>());
|
||||
}
|
||||
flags.get(type).add(flag1.getName());
|
||||
}
|
||||
String message = "";
|
||||
StringBuilder message = new StringBuilder();
|
||||
String prefix = "";
|
||||
for (Map.Entry<String, ArrayList<String>> entry : flags.entrySet()) {
|
||||
String category = entry.getKey();
|
||||
List<String> flagNames = entry.getValue();
|
||||
Collections.sort(flagNames);
|
||||
message += prefix + "&6" + category + ": &7" + StringMan.join(flagNames, ", ");
|
||||
message.append(prefix).append("&6").append(category).append(": &7")
|
||||
.append(StringMan.join(flagNames, ", "));
|
||||
prefix = "\n";
|
||||
}
|
||||
MainUtil.sendMessage(player, message);
|
||||
MainUtil.sendMessage(player, message.toString());
|
||||
return true;
|
||||
}
|
||||
MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot flag <set|remove|add|list|info>");
|
||||
|
@ -209,7 +209,7 @@ public class GenerateDocs {
|
||||
line =
|
||||
line.replaceAll("/[*][*] ", "").replaceAll("[*]/ ", "").replaceAll("[*] ", "")
|
||||
.trim();
|
||||
result.append(line + '\n');
|
||||
result.append(line).append('\n');
|
||||
}
|
||||
}
|
||||
return result.toString().trim();
|
||||
|
@ -57,9 +57,7 @@ public class Help extends Command {
|
||||
public void displayHelp(PlotPlayer player, String cat, int page) {
|
||||
CommandCategory catEnum = null;
|
||||
if (cat != null) {
|
||||
if (StringMan.isEqualIgnoreCase(cat, "all")) {
|
||||
catEnum = null;
|
||||
} else {
|
||||
if (!StringMan.isEqualIgnoreCase(cat, "all")) {
|
||||
for (CommandCategory c : CommandCategory.values()) {
|
||||
if (StringMan.isEqualIgnoreCaseToAny(cat, c.name(), c.toString())) {
|
||||
catEnum = c;
|
||||
@ -76,13 +74,13 @@ public class Help extends Command {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append(C.HELP_HEADER.s());
|
||||
for (CommandCategory c : CommandCategory.values()) {
|
||||
builder.append("\n" + StringMan
|
||||
builder.append("\n").append(StringMan
|
||||
.replaceAll(C.HELP_INFO_ITEM.s(), "%category%", c.toString().toLowerCase(),
|
||||
"%category_desc%", c.toString()));
|
||||
}
|
||||
builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", "all")
|
||||
.replaceAll("%category_desc%", "Display all commands"));
|
||||
builder.append("\n" + C.HELP_FOOTER.s());
|
||||
builder.append("\n").append(C.HELP_FOOTER.s());
|
||||
MainUtil.sendMessage(player, builder.toString(), false);
|
||||
return;
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ import java.util.List;
|
||||
StringBuilder string = new StringBuilder();
|
||||
string.append(StringMan
|
||||
.replaceAll(C.COMMENT_LIST_HEADER_PAGED.s(), "%amount%", comments.length, "%cur",
|
||||
page + 1, "%max", totalPages + 1, "%word", "all") + '\n');
|
||||
page + 1, "%max", totalPages + 1, "%word", "all")).append('\n');
|
||||
|
||||
// This might work xD
|
||||
for (int x = page * 12; x < max; x++) {
|
||||
|
@ -69,24 +69,24 @@ import java.util.UUID;
|
||||
}
|
||||
};
|
||||
UUID uuid = player.getUUID();
|
||||
String name = MainUtil.getName(plot.owner);
|
||||
inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cPlot Info",
|
||||
"&cID: &6" + plot.getId().toString(), "&cOwner: &6" + name,
|
||||
"&cAlias: &6" + plot.getAlias(),
|
||||
"&cBiome: &6" + plot.getBiome().replaceAll("_", "").toLowerCase(),
|
||||
"&cCan Build: &6" + plot.isAdded(uuid),
|
||||
"&cSeen: &6" + MainUtil.secToTime((int) (ExpireManager.IMP.getAge(plot) / 1000)),
|
||||
"&cIs Denied: &6" + plot.isDenied(uuid)));
|
||||
inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cTrusted",
|
||||
String name = MainUtil.getName(plot.guessOwner());
|
||||
inv.setItem(1,
|
||||
new PlotItemStack("emerald", 1, "&cPlot Info", "&cID: &6" + plot.getId().toString(),
|
||||
"&cOwner: &6" + name, "&cAlias: &6" + plot.getAlias(),
|
||||
"&cBiome: &6" + plot.getBiome().replaceAll("_", "").toLowerCase(),
|
||||
"&cCan Build: &6" + plot.isAdded(uuid), "&cSeen: &6" + MainUtil
|
||||
.secToTime((int) (ExpireManager.IMP.getAge(plot) / 1000)),
|
||||
"&cIs Denied: &6" + plot.isDenied(uuid)));
|
||||
inv.setItem(1, new PlotItemStack("emerald", 1, "&cTrusted",
|
||||
"&cAmount: &6" + plot.getTrusted().size(),
|
||||
"&8Click to view a list of the trusted users"));
|
||||
inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cMembers",
|
||||
inv.setItem(1, new PlotItemStack("emerald", 1, "&cMembers",
|
||||
"&cAmount: &6" + plot.getMembers().size(),
|
||||
"&8Click to view a list of plot members"));
|
||||
inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cDenied", "&cDenied",
|
||||
inv.setItem(1, new PlotItemStack("emerald", 1, "&cDenied", "&cDenied",
|
||||
"&cAmount: &6" + plot.getDenied().size(),
|
||||
"&8Click to view a list of denied players"));
|
||||
inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cFlags", "&cFlags",
|
||||
inv.setItem(1, new PlotItemStack("emerald", 1, "&cFlags", "&cFlags",
|
||||
"&cAmount: &6" + plot.getFlags().size(), "&8Click to view a list of plot flags"));
|
||||
inv.openInventory();
|
||||
return true;
|
||||
|
@ -10,8 +10,11 @@ import com.github.intellectualsites.plotsquared.plot.util.*;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager;
|
||||
import com.google.common.base.Optional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
|
||||
@CommandDeclaration(command = "list", aliases = {"l", "find", "search"}, description = "List plots",
|
||||
permission = "plots.list", category = CommandCategory.INFO,
|
||||
@ -132,7 +135,7 @@ public class ListCmd extends SubCommand {
|
||||
return false;
|
||||
}
|
||||
plots = ExpireManager.IMP == null ?
|
||||
new ArrayList<Plot>() :
|
||||
new ArrayList<>() :
|
||||
new ArrayList<>(ExpireManager.IMP.getPendingExpired());
|
||||
break;
|
||||
case "area":
|
||||
@ -145,7 +148,7 @@ public class ListCmd extends SubCommand {
|
||||
C.PERMISSION_LIST_WORLD_NAME.f(world));
|
||||
return false;
|
||||
}
|
||||
plots = area == null ? new ArrayList<Plot>() : new ArrayList<>(area.getPlots());
|
||||
plots = area == null ? new ArrayList<>() : new ArrayList<>(area.getPlots());
|
||||
break;
|
||||
case "all":
|
||||
if (!Permissions.hasPermission(player, C.PERMISSION_LIST_ALL)) {
|
||||
@ -167,18 +170,16 @@ public class ListCmd extends SubCommand {
|
||||
}
|
||||
plots.add(plot);
|
||||
}
|
||||
Collections.sort(plots, new Comparator<Plot>() {
|
||||
@Override public int compare(Plot a, Plot b) {
|
||||
String va = "" + a.getFlags().get(Flags.DONE);
|
||||
String vb = "" + b.getFlags().get(Flags.DONE);
|
||||
if (MathMan.isInteger(va)) {
|
||||
if (MathMan.isInteger(vb)) {
|
||||
return Integer.parseInt(vb) - Integer.parseInt(va);
|
||||
}
|
||||
return -1;
|
||||
plots.sort((a, b) -> {
|
||||
String va = "" + a.getFlags().get(Flags.DONE);
|
||||
String vb = "" + b.getFlags().get(Flags.DONE);
|
||||
if (MathMan.isInteger(va)) {
|
||||
if (MathMan.isInteger(vb)) {
|
||||
return Integer.parseInt(vb) - Integer.parseInt(va);
|
||||
}
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
});
|
||||
sort = false;
|
||||
break;
|
||||
@ -188,33 +189,31 @@ public class ListCmd extends SubCommand {
|
||||
return false;
|
||||
}
|
||||
plots = new ArrayList<>(PlotSquared.get().getPlots());
|
||||
Collections.sort(plots, new Comparator<Plot>() {
|
||||
@Override public int compare(Plot p1, Plot p2) {
|
||||
double v1 = 0;
|
||||
int p1s = p1.getSettings().getRatings().size();
|
||||
int p2s = p2.getRatings().size();
|
||||
if (!p1.getSettings().getRatings().isEmpty()) {
|
||||
for (Entry<UUID, Rating> entry : p1.getRatings().entrySet()) {
|
||||
double av = entry.getValue().getAverageRating();
|
||||
v1 += av * av;
|
||||
}
|
||||
v1 /= p1s;
|
||||
v1 += p1s;
|
||||
plots.sort((p1, p2) -> {
|
||||
double v1 = 0;
|
||||
int p1s = p1.getSettings().getRatings().size();
|
||||
int p2s = p2.getRatings().size();
|
||||
if (!p1.getSettings().getRatings().isEmpty()) {
|
||||
for (Entry<UUID, Rating> entry : p1.getRatings().entrySet()) {
|
||||
double av = entry.getValue().getAverageRating();
|
||||
v1 += av * av;
|
||||
}
|
||||
double v2 = 0;
|
||||
if (!p2.getSettings().getRatings().isEmpty()) {
|
||||
for (Entry<UUID, Rating> entry : p2.getRatings().entrySet()) {
|
||||
double av = entry.getValue().getAverageRating();
|
||||
v2 += av * av;
|
||||
}
|
||||
v2 /= p2s;
|
||||
v2 += p2s;
|
||||
}
|
||||
if (v2 == v1 && v2 != 0) {
|
||||
return p2s - p1s;
|
||||
}
|
||||
return (int) Math.signum(v2 - v1);
|
||||
v1 /= p1s;
|
||||
v1 += p1s;
|
||||
}
|
||||
double v2 = 0;
|
||||
if (!p2.getSettings().getRatings().isEmpty()) {
|
||||
for (Entry<UUID, Rating> entry : p2.getRatings().entrySet()) {
|
||||
double av = entry.getValue().getAverageRating();
|
||||
v2 += av * av;
|
||||
}
|
||||
v2 /= p2s;
|
||||
v2 += p2s;
|
||||
}
|
||||
if (v2 == v1 && v2 != 0) {
|
||||
return p2s - p1s;
|
||||
}
|
||||
return (int) Math.signum(v2 - v1);
|
||||
});
|
||||
sort = false;
|
||||
break;
|
||||
@ -241,7 +240,7 @@ public class ListCmd extends SubCommand {
|
||||
}
|
||||
plots = new ArrayList<>();
|
||||
for (Plot plot : PlotSquared.get().getPlots()) {
|
||||
if (plot.owner == null) {
|
||||
if (plot.guessOwner() == null) {
|
||||
plots.add(plot);
|
||||
}
|
||||
}
|
||||
@ -253,10 +252,10 @@ public class ListCmd extends SubCommand {
|
||||
}
|
||||
plots = new ArrayList<>();
|
||||
for (Plot plot : PlotSquared.get().getPlots()) {
|
||||
if (plot.owner == null) {
|
||||
if (plot.guessOwner() == null) {
|
||||
continue;
|
||||
}
|
||||
if (UUIDHandler.getName(plot.owner) == null) {
|
||||
if (UUIDHandler.getName(plot.guessOwner()) == null) {
|
||||
plots.add(plot);
|
||||
}
|
||||
}
|
||||
@ -330,12 +329,7 @@ public class ListCmd extends SubCommand {
|
||||
public void displayPlots(final PlotPlayer player, List<Plot> plots, int pageSize, int page,
|
||||
PlotArea area, String[] args, boolean sort) {
|
||||
// Header
|
||||
Iterator<Plot> iterator = plots.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
if (!iterator.next().isBasePlot()) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
plots.removeIf(plot -> !plot.isBasePlot());
|
||||
if (sort) {
|
||||
plots = PlotSquared.get().sortPlots(plots, SortType.CREATION_DATE, area);
|
||||
}
|
||||
@ -343,7 +337,7 @@ public class ListCmd extends SubCommand {
|
||||
new RunnableVal3<Integer, Plot, PlotMessage>() {
|
||||
@Override public void run(Integer i, Plot plot, PlotMessage message) {
|
||||
String color;
|
||||
if (plot.owner == null) {
|
||||
if (plot.guessOwner() == null) {
|
||||
color = "$3";
|
||||
} else if (plot.isOwner(player.getUUID())) {
|
||||
color = "$1";
|
||||
|
@ -103,17 +103,15 @@ import java.util.List;
|
||||
List<String> schematics = player.getMeta("plot_schematics");
|
||||
if (schematics == null) {
|
||||
plot.addRunning();
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
List<String> schematics = SchematicHandler.manager.getSaves(player.getUUID());
|
||||
plot.removeRunning();
|
||||
if ((schematics == null) || schematics.isEmpty()) {
|
||||
MainUtil.sendMessage(player, C.LOAD_FAILED);
|
||||
return;
|
||||
}
|
||||
player.setMeta("plot_schematics", schematics);
|
||||
displaySaves(player);
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
List<String> schematics1 = SchematicHandler.manager.getSaves(player.getUUID());
|
||||
plot.removeRunning();
|
||||
if ((schematics1 == null) || schematics1.isEmpty()) {
|
||||
MainUtil.sendMessage(player, C.LOAD_FAILED);
|
||||
return;
|
||||
}
|
||||
player.setMeta("plot_schematics", schematics1);
|
||||
displaySaves(player);
|
||||
});
|
||||
} else {
|
||||
displaySaves(player);
|
||||
@ -151,30 +149,30 @@ import java.util.List;
|
||||
if (time >= 33868800) {
|
||||
int years = (int) (time / 33868800);
|
||||
time -= years * 33868800;
|
||||
toreturn.append(years + "y ");
|
||||
toreturn.append(years).append("y ");
|
||||
}
|
||||
if (time >= 604800) {
|
||||
int weeks = (int) (time / 604800);
|
||||
time -= weeks * 604800;
|
||||
toreturn.append(weeks + "w ");
|
||||
toreturn.append(weeks).append("w ");
|
||||
}
|
||||
if (time >= 86400) {
|
||||
int days = (int) (time / 86400);
|
||||
time -= days * 86400;
|
||||
toreturn.append(days + "d ");
|
||||
toreturn.append(days).append("d ");
|
||||
}
|
||||
if (time >= 3600) {
|
||||
int hours = (int) (time / 3600);
|
||||
time -= hours * 3600;
|
||||
toreturn.append(hours + "h ");
|
||||
toreturn.append(hours).append("h ");
|
||||
}
|
||||
if (time >= 60) {
|
||||
int minutes = (int) (time / 60);
|
||||
time -= minutes * 60;
|
||||
toreturn.append(minutes + "m ");
|
||||
toreturn.append(minutes).append("m ");
|
||||
}
|
||||
if (toreturn.length() == 0 || (time > 0)) {
|
||||
toreturn.append(time + "s ");
|
||||
toreturn.append(time).append("s ");
|
||||
}
|
||||
return toreturn.toString().trim();
|
||||
}
|
||||
|
@ -127,27 +127,23 @@ public class MainCommand extends Command {
|
||||
@Override
|
||||
public void run(final Command cmd, final Runnable success, final Runnable failure) {
|
||||
if (cmd.hasConfirmation(player)) {
|
||||
CmdConfirm.addPending(player, cmd.getUsage(), new Runnable() {
|
||||
@Override public void run() {
|
||||
if (EconHandler.manager != null) {
|
||||
PlotArea area = player.getApplicablePlotArea();
|
||||
if (area != null) {
|
||||
Expression<Double> priceEval =
|
||||
area.PRICES.get(cmd.getFullId());
|
||||
Double price =
|
||||
priceEval != null ? priceEval.evaluate(0d) : 0d;
|
||||
if (price != null
|
||||
&& EconHandler.manager.getMoney(player) < price) {
|
||||
if (failure != null) {
|
||||
failure.run();
|
||||
}
|
||||
return;
|
||||
CmdConfirm.addPending(player, cmd.getUsage(), () -> {
|
||||
if (EconHandler.manager != null) {
|
||||
PlotArea area = player.getApplicablePlotArea();
|
||||
if (area != null) {
|
||||
Expression<Double> priceEval = area.PRICES.get(cmd.getFullId());
|
||||
Double price = priceEval != null ? priceEval.evaluate(0d) : 0d;
|
||||
if (price != null
|
||||
&& EconHandler.manager.getMoney(player) < price) {
|
||||
if (failure != null) {
|
||||
failure.run();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (success != null) {
|
||||
success.run();
|
||||
}
|
||||
}
|
||||
if (success != null) {
|
||||
success.run();
|
||||
}
|
||||
});
|
||||
return;
|
||||
|
@ -55,12 +55,11 @@ public class Merge extends SubCommand {
|
||||
MainUtil.sendMessage(player, C.NO_PLOT_PERMS);
|
||||
return false;
|
||||
} else {
|
||||
uuid = plot.owner;
|
||||
uuid = plot.guessOwner();
|
||||
}
|
||||
}
|
||||
final PlotArea plotArea = plot.getArea();
|
||||
Expression<Double> priceExr =
|
||||
plotArea.PRICES.containsKey("merge") ? plotArea.PRICES.get("merge") : null;
|
||||
Expression<Double> priceExr = plotArea.PRICES.getOrDefault("merge", null);
|
||||
final int size = plot.getConnectedPlots().size();
|
||||
final double price = priceExr == null ? 0d : priceExr.evaluate((double) size);
|
||||
if (EconHandler.manager != null && plotArea.USE_ECONOMY && price > 0d
|
||||
@ -155,25 +154,23 @@ public class Merge extends SubCommand {
|
||||
}
|
||||
isOnline = true;
|
||||
final int dir = direction;
|
||||
Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(accepter, C.MERGE_ACCEPTED);
|
||||
plot.autoMerge(dir, maxSize - size, owner, terrain);
|
||||
PlotPlayer plotPlayer = UUIDHandler.getPlayer(player.getUUID());
|
||||
if (plotPlayer == null) {
|
||||
sendMessage(accepter, C.MERGE_NOT_VALID);
|
||||
Runnable run = () -> {
|
||||
MainUtil.sendMessage(accepter, C.MERGE_ACCEPTED);
|
||||
plot.autoMerge(dir, maxSize - size, owner, terrain);
|
||||
PlotPlayer plotPlayer = UUIDHandler.getPlayer(player.getUUID());
|
||||
if (plotPlayer == null) {
|
||||
sendMessage(accepter, C.MERGE_NOT_VALID);
|
||||
return;
|
||||
}
|
||||
if (EconHandler.manager != null && plotArea.USE_ECONOMY && price > 0d) {
|
||||
if (EconHandler.manager.getMoney(player) < price) {
|
||||
sendMessage(player, C.CANNOT_AFFORD_MERGE, String.valueOf(price));
|
||||
return;
|
||||
}
|
||||
if (EconHandler.manager != null && plotArea.USE_ECONOMY && price > 0d) {
|
||||
if (EconHandler.manager.getMoney(player) < price) {
|
||||
sendMessage(player, C.CANNOT_AFFORD_MERGE, String.valueOf(price));
|
||||
return;
|
||||
}
|
||||
EconHandler.manager.withdrawMoney(player, price);
|
||||
sendMessage(player, C.REMOVED_BALANCE, String.valueOf(price));
|
||||
}
|
||||
MainUtil.sendMessage(player, C.SUCCESS_MERGE);
|
||||
EconHandler.manager.withdrawMoney(player, price);
|
||||
sendMessage(player, C.REMOVED_BALANCE, String.valueOf(price));
|
||||
}
|
||||
MainUtil.sendMessage(player, C.SUCCESS_MERGE);
|
||||
};
|
||||
if (hasConfirmation(player)) {
|
||||
CmdConfirm.addPending(accepter,
|
||||
|
@ -54,11 +54,7 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
||||
C.PLOTWORLD_INCOMPATIBLE.send(player);
|
||||
return false;
|
||||
}
|
||||
if (plot1.move(plot2, new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, C.MOVE_SUCCESS);
|
||||
}
|
||||
}, false)) {
|
||||
if (plot1.move(plot2, () -> MainUtil.sendMessage(player, C.MOVE_SUCCESS), false)) {
|
||||
return true;
|
||||
} else {
|
||||
MainUtil.sendMessage(player, C.REQUIRES_UNOWNED);
|
||||
|
@ -71,20 +71,17 @@ import java.util.UUID;
|
||||
final String finalName = name;
|
||||
final UUID finalUUID = uuid;
|
||||
final boolean removeDenied = plot.isDenied(finalUUID);
|
||||
Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
if (plot.setOwner(finalUUID, player)) {
|
||||
if (removeDenied)
|
||||
plot.removeDenied(finalUUID);
|
||||
plot.setSign(finalName);
|
||||
MainUtil.sendMessage(player, C.SET_OWNER);
|
||||
if (other != null) {
|
||||
MainUtil
|
||||
.sendMessage(other, C.NOW_OWNER, plot.getArea() + ";" + plot.getId());
|
||||
}
|
||||
} else
|
||||
MainUtil.sendMessage(player, C.SET_OWNER_CANCELLED);
|
||||
}
|
||||
Runnable run = () -> {
|
||||
if (plot.setOwner(finalUUID, player)) {
|
||||
if (removeDenied)
|
||||
plot.removeDenied(finalUUID);
|
||||
plot.setSign(finalName);
|
||||
MainUtil.sendMessage(player, C.SET_OWNER);
|
||||
if (other != null) {
|
||||
MainUtil.sendMessage(other, C.NOW_OWNER, plot.getArea() + ";" + plot.getId());
|
||||
}
|
||||
} else
|
||||
MainUtil.sendMessage(player, C.SET_OWNER_CANCELLED);
|
||||
};
|
||||
if (hasConfirmation(player)) {
|
||||
CmdConfirm.addPending(player, "/plot set owner " + value, run);
|
||||
|
@ -13,18 +13,16 @@ import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
||||
category = CommandCategory.INFO) public class PluginCmd extends SubCommand {
|
||||
|
||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||
TaskManager.IMP.taskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, String.format(
|
||||
"$2>> $1&l" + PlotSquared.imp().getPluginName() + " $2($1Version$2: $1%s$2)",
|
||||
PlotSquared.get().getVersion()));
|
||||
MainUtil.sendMessage(player,
|
||||
"$2>> $1&lAuthors$2: $1Citymonstret $2& $1Empire92 $2& $1MattBDev $2& $1dordsor21");
|
||||
MainUtil.sendMessage(player,
|
||||
"$2>> $1&lWiki$2: $1https://github.com/IntellectualCrafters/PlotSquared/wiki");
|
||||
MainUtil.sendMessage(player,
|
||||
"$2>> $1&lNewest Version$2: $1" + getNewestVersionString());
|
||||
}
|
||||
TaskManager.IMP.taskAsync(() -> {
|
||||
MainUtil.sendMessage(player, String.format(
|
||||
"$2>> $1&l" + PlotSquared.get().IMP.getPluginName() + " $2($1Version$2: $1%s$2)",
|
||||
PlotSquared.get().getVersion()));
|
||||
MainUtil.sendMessage(player,
|
||||
"$2>> $1&lAuthors$2: $1Citymonstret $2& $1Empire92 $2& $1MattBDev $2& $1dordsor21");
|
||||
MainUtil.sendMessage(player,
|
||||
"$2>> $1&lWiki$2: $1https://github.com/IntellectualCrafters/PlotSquared/wiki");
|
||||
MainUtil
|
||||
.sendMessage(player, "$2>> $1&lNewest Version$2: $1" + getNewestVersionString());
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
@ -105,12 +105,10 @@ import java.util.UUID;
|
||||
if (added != null && !plot.isAdded(added)) {
|
||||
continue;
|
||||
}
|
||||
if (unknown && UUIDHandler.getName(plot.owner) != null) {
|
||||
if (unknown && UUIDHandler.getName(plot.guessOwner()) != null) {
|
||||
continue;
|
||||
}
|
||||
for (Plot current : plot.getConnectedPlots()) {
|
||||
toDelete.add(current);
|
||||
}
|
||||
toDelete.addAll(plot.getConnectedPlots());
|
||||
}
|
||||
if (PlotSquared.get().plots_tmp != null) {
|
||||
for (Entry<String, HashMap<PlotId, Plot>> entry : PlotSquared.get().plots_tmp
|
||||
@ -130,7 +128,7 @@ import java.util.UUID;
|
||||
if (added != null && !plot.isAdded(added)) {
|
||||
continue;
|
||||
}
|
||||
if (unknown && UUIDHandler.getName(plot.owner) != null) {
|
||||
if (unknown && UUIDHandler.getName(plot.guessOwner()) != null) {
|
||||
continue;
|
||||
}
|
||||
toDelete.add(plot);
|
||||
@ -143,23 +141,21 @@ import java.util.UUID;
|
||||
}
|
||||
String cmd =
|
||||
"/plot purge " + StringMan.join(args, " ") + " (" + toDelete.size() + " plots)";
|
||||
Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
PlotSquared.debug("Calculating plots to purge, please wait...");
|
||||
HashSet<Integer> ids = new HashSet<>();
|
||||
for (Plot plot : toDelete) {
|
||||
if (plot.temp != Integer.MAX_VALUE) {
|
||||
ids.add(plot.temp);
|
||||
plot.getArea().removePlot(plot.getId());
|
||||
for (PlotPlayer pp : plot.getPlayersInPlot()) {
|
||||
PlotListener.plotEntry(pp, plot);
|
||||
}
|
||||
plot.removeSign();
|
||||
Runnable run = () -> {
|
||||
PlotSquared.debug("Calculating plots to purge, please wait...");
|
||||
HashSet<Integer> ids = new HashSet<>();
|
||||
for (Plot plot : toDelete) {
|
||||
if (plot.temp != Integer.MAX_VALUE) {
|
||||
ids.add(plot.temp);
|
||||
plot.getArea().removePlot(plot.getId());
|
||||
for (PlotPlayer pp : plot.getPlayersInPlot()) {
|
||||
PlotListener.plotEntry(pp, plot);
|
||||
}
|
||||
plot.removeSign();
|
||||
}
|
||||
DBFunc.purgeIds(ids);
|
||||
C.PURGE_SUCCESS.send(player, ids.size() + "/" + toDelete.size());
|
||||
}
|
||||
DBFunc.purgeIds(ids);
|
||||
C.PURGE_SUCCESS.send(player, ids.size() + "/" + toDelete.size());
|
||||
};
|
||||
if (hasConfirmation(player)) {
|
||||
CmdConfirm.addPending(player, cmd, run);
|
||||
|
@ -10,8 +10,11 @@ import com.github.intellectualsites.plotsquared.plot.flag.Flags;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.*;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.*;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
|
||||
@CommandDeclaration(command = "rate", permission = "plots.rate", description = "Rate the plot",
|
||||
usage = "/plot rate [#|next|purge]", aliases = "rt", category = CommandCategory.INFO,
|
||||
@ -22,25 +25,23 @@ import java.util.Map.Entry;
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "next": {
|
||||
ArrayList<Plot> plots = new ArrayList<>(PlotSquared.get().getBasePlots());
|
||||
Collections.sort(plots, new Comparator<Plot>() {
|
||||
@Override public int compare(Plot p1, Plot p2) {
|
||||
double v1 = 0;
|
||||
if (!p1.getRatings().isEmpty()) {
|
||||
for (Entry<UUID, Rating> entry : p1.getRatings().entrySet()) {
|
||||
v1 -= 11 - entry.getValue().getAverageRating();
|
||||
}
|
||||
Collections.sort(plots, (p1, p2) -> {
|
||||
double v1 = 0;
|
||||
if (!p1.getRatings().isEmpty()) {
|
||||
for (Entry<UUID, Rating> entry : p1.getRatings().entrySet()) {
|
||||
v1 -= 11 - entry.getValue().getAverageRating();
|
||||
}
|
||||
double v2 = 0;
|
||||
if (!p2.getRatings().isEmpty()) {
|
||||
for (Entry<UUID, Rating> entry : p2.getRatings().entrySet()) {
|
||||
v2 -= 11 - entry.getValue().getAverageRating();
|
||||
}
|
||||
}
|
||||
if (v1 == v2) {
|
||||
return -0;
|
||||
}
|
||||
return v2 > v1 ? 1 : -1;
|
||||
}
|
||||
double v2 = 0;
|
||||
if (!p2.getRatings().isEmpty()) {
|
||||
for (Entry<UUID, Rating> entry : p2.getRatings().entrySet()) {
|
||||
v2 -= 11 - entry.getValue().getAverageRating();
|
||||
}
|
||||
}
|
||||
if (v1 == v2) {
|
||||
return -0;
|
||||
}
|
||||
return v2 > v1 ? 1 : -1;
|
||||
});
|
||||
UUID uuid = player.getUUID();
|
||||
for (Plot p : plots) {
|
||||
@ -123,25 +124,23 @@ import java.util.Map.Entry;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
inventory.setItem(0, new PlotItemStack(35, (short) 12, 0, "0/8"));
|
||||
inventory.setItem(1, new PlotItemStack(35, (short) 14, 1, "1/8"));
|
||||
inventory.setItem(2, new PlotItemStack(35, (short) 1, 2, "2/8"));
|
||||
inventory.setItem(3, new PlotItemStack(35, (short) 4, 3, "3/8"));
|
||||
inventory.setItem(4, new PlotItemStack(35, (short) 5, 4, "4/8"));
|
||||
inventory.setItem(5, new PlotItemStack(35, (short) 9, 5, "5/8"));
|
||||
inventory.setItem(6, new PlotItemStack(35, (short) 11, 6, "6/8"));
|
||||
inventory.setItem(7, new PlotItemStack(35, (short) 10, 7, "7/8"));
|
||||
inventory.setItem(8, new PlotItemStack(35, (short) 2, 8, "8/8"));
|
||||
inventory.setItem(0, new PlotItemStack("brown_wool", 0, "0/8"));
|
||||
inventory.setItem(1, new PlotItemStack("red_wool", 1, "1/8"));
|
||||
inventory.setItem(2, new PlotItemStack("orange_wool", 2, "2/8"));
|
||||
inventory.setItem(3, new PlotItemStack("yellow_wool", 3, "3/8"));
|
||||
inventory.setItem(4, new PlotItemStack("lime_wool", 4, "4/8"));
|
||||
inventory.setItem(5, new PlotItemStack("cyan_wool", 5, "5/8"));
|
||||
inventory.setItem(6, new PlotItemStack("blue_wool", 6, "6/8"));
|
||||
inventory.setItem(7, new PlotItemStack("purple_wool", 7, "7/8"));
|
||||
inventory.setItem(8, new PlotItemStack("magenta_wool", 8, "8/8"));
|
||||
inventory.openInventory();
|
||||
}
|
||||
};
|
||||
if (plot.getSettings().ratings == null) {
|
||||
if (!Settings.Enabled_Components.RATING_CACHE) {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
plot.getSettings().ratings = DBFunc.getRatings(plot);
|
||||
run.run();
|
||||
}
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
plot.getSettings().ratings = DBFunc.getRatings(plot);
|
||||
run.run();
|
||||
});
|
||||
return true;
|
||||
}
|
||||
@ -167,26 +166,22 @@ import java.util.Map.Entry;
|
||||
return false;
|
||||
}
|
||||
final UUID uuid = player.getUUID();
|
||||
final Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
if (plot.getRatings().containsKey(uuid)) {
|
||||
sendMessage(player, C.RATING_ALREADY_EXISTS, plot.getId().toString());
|
||||
return;
|
||||
}
|
||||
Rating result = EventUtil.manager.callRating(player, plot, new Rating(rating));
|
||||
if (result != null) {
|
||||
plot.addRating(uuid, result);
|
||||
sendMessage(player, C.RATING_APPLIED, plot.getId().toString());
|
||||
}
|
||||
final Runnable run = () -> {
|
||||
if (plot.getRatings().containsKey(uuid)) {
|
||||
sendMessage(player, C.RATING_ALREADY_EXISTS, plot.getId().toString());
|
||||
return;
|
||||
}
|
||||
Rating result = EventUtil.manager.callRating(player, plot, new Rating(rating));
|
||||
if (result != null) {
|
||||
plot.addRating(uuid, result);
|
||||
sendMessage(player, C.RATING_APPLIED, plot.getId().toString());
|
||||
}
|
||||
};
|
||||
if (plot.getSettings().ratings == null) {
|
||||
if (!Settings.Enabled_Components.RATING_CACHE) {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
plot.getSettings().ratings = DBFunc.getRatings(plot);
|
||||
run.run();
|
||||
}
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
plot.getSettings().ratings = DBFunc.getRatings(plot);
|
||||
run.run();
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
@ -7,8 +7,6 @@ import com.github.intellectualsites.plotsquared.plot.object.*;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.ChunkManager;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
@CommandDeclaration(command = "relight", description = "Relight your plot", usage = "/plot relight",
|
||||
category = CommandCategory.DEBUG) public class Relight extends Command {
|
||||
public Relight() {
|
||||
@ -23,17 +21,14 @@ import java.util.HashSet;
|
||||
C.NOT_IN_PLOT.send(player);
|
||||
return;
|
||||
}
|
||||
HashSet<RegionWrapper> regions = plot.getRegions();
|
||||
final LocalBlockQueue queue = plot.getArea().getQueue(false);
|
||||
ChunkManager.chunkTask(plot, new RunnableVal<int[]>() {
|
||||
@Override public void run(int[] value) {
|
||||
queue.fixChunkLighting(value[0], value[1]);
|
||||
}
|
||||
}, new Runnable() {
|
||||
@Override public void run() {
|
||||
plot.refreshChunks();
|
||||
C.SET_BLOCK_ACTION_FINISHED.send(player);
|
||||
}
|
||||
}, () -> {
|
||||
plot.refreshChunks();
|
||||
C.SET_BLOCK_ACTION_FINISHED.send(player);
|
||||
}, 5);
|
||||
}
|
||||
}
|
||||
|
@ -189,7 +189,6 @@ public class SchematicCmd extends SubCommand {
|
||||
MainUtil.sendMessage(player, C.NO_PLOT_PERMS);
|
||||
return false;
|
||||
}
|
||||
location.getWorld();
|
||||
Collection<Plot> plots = new ArrayList<>();
|
||||
plots.add(plot);
|
||||
boolean result = SchematicHandler.manager.exportAll(plots, null, null, () -> {
|
||||
|
@ -58,8 +58,6 @@ import java.util.HashSet;
|
||||
MainUtil.sendMessage(player, C.NEED_BLOCK);
|
||||
return true;
|
||||
}
|
||||
String[] split = material.split(",");
|
||||
// blocks = Configuration.BLOCKLIST.parseString(material);
|
||||
|
||||
try {
|
||||
bucket = Configuration.BLOCK_BUCKET.parseString(material);
|
||||
@ -100,11 +98,7 @@ import java.util.HashSet;
|
||||
current.setComponent(component, bucket);
|
||||
}
|
||||
MainUtil.sendMessage(player, C.GENERATING_COMPONENT);
|
||||
GlobalBlockQueue.IMP.addTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
plot.removeRunning();
|
||||
}
|
||||
});
|
||||
GlobalBlockQueue.IMP.addTask(() -> plot.removeRunning());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -114,8 +108,8 @@ import java.util.HashSet;
|
||||
}
|
||||
|
||||
public boolean noArgs(PlotPlayer player) {
|
||||
ArrayList<String> newValues = new ArrayList<>();
|
||||
newValues.addAll(Arrays.asList("biome", "alias", "home", "flag"));
|
||||
ArrayList<String> newValues =
|
||||
new ArrayList<>(Arrays.asList("biome", "alias", "home", "flag"));
|
||||
Plot plot = player.getCurrentPlot();
|
||||
if (plot != null) {
|
||||
newValues.addAll(
|
||||
|
@ -25,7 +25,7 @@ import java.util.Map.Entry;
|
||||
StringBuilder message = new StringBuilder();
|
||||
message.append("&6What generator do you want?");
|
||||
for (Entry<String, GeneratorWrapper<?>> entry : SetupUtils.generators.entrySet()) {
|
||||
if (entry.getKey().equals(PlotSquared.imp().getPluginName())) {
|
||||
if (entry.getKey().equals(PlotSquared.get().IMP.getPluginName())) {
|
||||
message.append("\n&8 - &2").append(entry.getKey()).append(" (Default Generator)");
|
||||
} else if (entry.getValue().isFull()) {
|
||||
message.append("\n&8 - &7").append(entry.getKey()).append(" (Plot Generator)");
|
||||
@ -73,8 +73,8 @@ import java.util.Map.Entry;
|
||||
MainUtil.sendMessage(player,
|
||||
"&cYou must choose a generator!" + prefix + StringMan
|
||||
.join(SetupUtils.generators.keySet(), prefix)
|
||||
.replaceAll(PlotSquared.imp().getPluginName(),
|
||||
"&2" + PlotSquared.imp().getPluginName()));
|
||||
.replaceAll(PlotSquared.get().IMP.getPluginName(),
|
||||
"&2" + PlotSquared.get().IMP.getPluginName()));
|
||||
sendMessage(player, C.SETUP_INIT);
|
||||
return false;
|
||||
}
|
||||
@ -142,7 +142,7 @@ import java.util.Map.Entry;
|
||||
SetupUtils.generators.get(object.plotManager).getPlotGenerator()
|
||||
.processSetup(object);
|
||||
} else {
|
||||
object.plotManager = PlotSquared.imp().getPluginName();
|
||||
object.plotManager = PlotSquared.get().IMP.getPluginName();
|
||||
MainUtil.sendMessage(player,
|
||||
"&c[WARNING] The specified generator does not identify as BukkitPlotGenerator");
|
||||
MainUtil.sendMessage(player,
|
||||
@ -282,7 +282,7 @@ import java.util.Map.Entry;
|
||||
}
|
||||
MainUtil.sendMessage(player,
|
||||
"&cThe world you specified already exists. After restarting, new terrain will use "
|
||||
+ PlotSquared.imp().getPluginName() + ", however you may need to "
|
||||
+ PlotSquared.get().IMP.getPluginName() + ", however you may need to "
|
||||
+ "reset the world for it to generate correctly!");
|
||||
}
|
||||
object.world = args[0];
|
||||
@ -318,7 +318,7 @@ import java.util.Map.Entry;
|
||||
messages.add(new PlotMessage("What generator do you want?").color("$6"));
|
||||
for (Entry<String, GeneratorWrapper<?>> entry : SetupUtils.generators.entrySet()) {
|
||||
final PlotMessage plotMessage = new PlotMessage(" - ").color("$8");
|
||||
if (entry.getKey().equals(PlotSquared.imp().getPluginName())) {
|
||||
if (entry.getKey().equals(PlotSquared.get().IMP.getPluginName())) {
|
||||
plotMessage.text(entry.getKey()).color("$8").tooltip("Select this generator")
|
||||
.color("$2").command("/plot setup generator " + entry.getKey())
|
||||
.text(" (Default Generator)").color("$7");
|
||||
|
@ -40,11 +40,7 @@ public class Swap extends SubCommand {
|
||||
C.PLOTWORLD_INCOMPATIBLE.send(player);
|
||||
return false;
|
||||
}
|
||||
if (plot1.move(plot2, new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, C.SWAP_SUCCESS);
|
||||
}
|
||||
}, true)) {
|
||||
if (plot1.move(plot2, () -> MainUtil.sendMessage(player, C.SWAP_SUCCESS), true)) {
|
||||
return true;
|
||||
} else {
|
||||
MainUtil.sendMessage(player, C.SWAP_OVERLAP);
|
||||
|
@ -15,7 +15,10 @@ import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.WorldUtil;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue;
|
||||
|
||||
import java.io.*;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
@ -63,9 +66,6 @@ import java.util.zip.ZipOutputStream;
|
||||
zis.closeEntry();
|
||||
}
|
||||
return true;
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
@ -147,8 +147,8 @@ import java.util.zip.ZipOutputStream;
|
||||
} catch (InvalidConfigurationException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
String manager =
|
||||
worldConfig.getString("generator.plugin", PlotSquared.imp().getPluginName());
|
||||
String manager = worldConfig
|
||||
.getString("generator.plugin", PlotSquared.get().IMP.getPluginName());
|
||||
String generator = worldConfig.getString("generator.init", manager);
|
||||
int type = worldConfig.getInt("generator.type");
|
||||
int terrain = worldConfig.getInt("generator.terrain");
|
||||
@ -161,11 +161,9 @@ import java.util.zip.ZipOutputStream;
|
||||
setup.step = new ConfigurationNode[0];
|
||||
setup.world = world;
|
||||
SetupUtils.manager.setupWorld(setup);
|
||||
GlobalBlockQueue.IMP.addTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, "Done!");
|
||||
player.teleport(WorldUtil.IMP.getSpawn(world));
|
||||
}
|
||||
GlobalBlockQueue.IMP.addTask(() -> {
|
||||
MainUtil.sendMessage(player, "Done!");
|
||||
player.teleport(WorldUtil.IMP.getSpawn(world));
|
||||
});
|
||||
return true;
|
||||
}
|
||||
@ -180,17 +178,15 @@ import java.util.zip.ZipOutputStream;
|
||||
return false;
|
||||
}
|
||||
final PlotManager manager = area.getPlotManager();
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
try {
|
||||
manager.exportTemplate(area);
|
||||
} catch (Exception e) { // Must recover from any exception thrown a third party template manager
|
||||
e.printStackTrace();
|
||||
MainUtil.sendMessage(player, "Failed: " + e.getMessage());
|
||||
return;
|
||||
}
|
||||
MainUtil.sendMessage(player, "Done!");
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
try {
|
||||
manager.exportTemplate(area);
|
||||
} catch (Exception e) { // Must recover from any exception thrown a third party template manager
|
||||
e.printStackTrace();
|
||||
MainUtil.sendMessage(player, "Failed: " + e.getMessage());
|
||||
return;
|
||||
}
|
||||
MainUtil.sendMessage(player, "Done!");
|
||||
});
|
||||
return true;
|
||||
default:
|
||||
|
@ -70,7 +70,7 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||
RunnableVal2<Command, CommandResult> whenDone) {
|
||||
PlotArea area = player.getApplicablePlotArea();
|
||||
boolean chat = area == null ? false : area.PLOT_CHAT;
|
||||
boolean chat = area != null && area.PLOT_CHAT;
|
||||
if (toggle(player, "disabletitles") != chat) {
|
||||
MainUtil.sendMessage(player, C.TOGGLE_ENABLED, command.toString());
|
||||
} else {
|
||||
|
@ -95,8 +95,7 @@ import java.util.Set;
|
||||
return false;
|
||||
}
|
||||
MainUtil.sendMessage(null, "Collecting region data...");
|
||||
ArrayList<Plot> plots = new ArrayList<>();
|
||||
plots.addAll(PlotSquared.get().getPlots(world));
|
||||
ArrayList<Plot> plots = new ArrayList<>(PlotSquared.get().getPlots(world));
|
||||
if (ExpireManager.IMP != null) {
|
||||
plots.removeAll(ExpireManager.IMP.getPendingExpired());
|
||||
}
|
||||
@ -198,11 +197,9 @@ import java.util.Set;
|
||||
}
|
||||
};
|
||||
} else {
|
||||
regenTask = new Runnable() {
|
||||
@Override public void run() {
|
||||
Trim.TASK = false;
|
||||
player.sendMessage("Trim done!");
|
||||
}
|
||||
regenTask = () -> {
|
||||
Trim.TASK = false;
|
||||
player.sendMessage("Trim done!");
|
||||
};
|
||||
}
|
||||
ChunkManager.manager.deleteRegionFiles(world, viable, regenTask);
|
||||
|
@ -39,14 +39,12 @@ import com.github.intellectualsites.plotsquared.plot.util.*;
|
||||
} else {
|
||||
createRoad = true;
|
||||
}
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override public void run() {
|
||||
if (!plot.unlinkPlot(createRoad, createRoad)) {
|
||||
MainUtil.sendMessage(player, "&cUnlink has been cancelled");
|
||||
return;
|
||||
}
|
||||
MainUtil.sendMessage(player, C.UNLINK_SUCCESS);
|
||||
Runnable runnable = () -> {
|
||||
if (!plot.unlinkPlot(createRoad, createRoad)) {
|
||||
MainUtil.sendMessage(player, "&cUnlink has been cancelled");
|
||||
return;
|
||||
}
|
||||
MainUtil.sendMessage(player, C.UNLINK_SUCCESS);
|
||||
};
|
||||
if (hasConfirmation(player)) {
|
||||
CmdConfirm.addPending(player, "/plot unlink " + plot.getId(), runnable);
|
||||
|
@ -915,18 +915,16 @@ public enum C {
|
||||
return m;
|
||||
}
|
||||
Map<String, String> map = new LinkedHashMap<>();
|
||||
if (args.length > 0) {
|
||||
for (int i = args.length - 1; i >= 0; i--) {
|
||||
String arg = "" + args[i];
|
||||
if (arg == null || arg.isEmpty()) {
|
||||
map.put("%s" + i, "");
|
||||
} else {
|
||||
arg = C.color(arg);
|
||||
map.put("%s" + i, arg);
|
||||
}
|
||||
if (i == 0) {
|
||||
map.put("%s", arg);
|
||||
}
|
||||
for (int i = args.length - 1; i >= 0; i--) {
|
||||
String arg = "" + args[i];
|
||||
if (arg.isEmpty()) {
|
||||
map.put("%s" + i, "");
|
||||
} else {
|
||||
arg = C.color(arg);
|
||||
map.put("%s" + i, arg);
|
||||
}
|
||||
if (i == 0) {
|
||||
map.put("%s", arg);
|
||||
}
|
||||
}
|
||||
m = StringMan.replaceFromMap(m, map);
|
||||
|
@ -120,7 +120,8 @@ public class Config {
|
||||
* @param clazz
|
||||
* @return
|
||||
*/
|
||||
public static Map<String, Object> getFields(Class clazz) {
|
||||
public static Map<String, Object> getFields(
|
||||
Class<? extends Settings.Enabled_Components> clazz) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
for (Field field : clazz.getFields()) {
|
||||
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
|
||||
@ -142,7 +143,8 @@ public class Config {
|
||||
}
|
||||
StringBuilder m = new StringBuilder();
|
||||
for (Object obj : listValue) {
|
||||
m.append(System.lineSeparator() + spacing + "- " + toYamlString(obj, spacing));
|
||||
m.append(System.lineSeparator()).append(spacing).append("- ")
|
||||
.append(toYamlString(obj, spacing));
|
||||
}
|
||||
return m.toString();
|
||||
}
|
||||
@ -176,7 +178,7 @@ public class Config {
|
||||
if (value == null && field.getType() != ConfigBlock.class) {
|
||||
setAccessible(field);
|
||||
Class<?>[] classes = clazz.getDeclaredClasses();
|
||||
for (Class current : classes) {
|
||||
for (Class<? extends Object> current : classes) {
|
||||
if (StringMan.isEqual(current.getSimpleName(), field.getName())) {
|
||||
field.set(instance, current.newInstance());
|
||||
break;
|
||||
|
@ -45,7 +45,7 @@ public class MySQL extends Database {
|
||||
return this.connection;
|
||||
}
|
||||
|
||||
@Override public Connection openConnection() throws SQLException, ClassNotFoundException {
|
||||
@Override public Connection openConnection() throws SQLException {
|
||||
if (checkConnection()) {
|
||||
return this.connection;
|
||||
}
|
||||
@ -69,7 +69,7 @@ public class MySQL extends Database {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override public ResultSet querySQL(String query) throws SQLException, ClassNotFoundException {
|
||||
@Override public ResultSet querySQL(String query) throws SQLException {
|
||||
if (checkConnection()) {
|
||||
openConnection();
|
||||
}
|
||||
@ -78,7 +78,7 @@ public class MySQL extends Database {
|
||||
}
|
||||
}
|
||||
|
||||
@Override public int updateSQL(String query) throws SQLException, ClassNotFoundException {
|
||||
@Override public int updateSQL(String query) throws SQLException {
|
||||
if (checkConnection()) {
|
||||
openConnection();
|
||||
}
|
||||
|
@ -121,42 +121,40 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
long last = System.currentTimeMillis();
|
||||
while (true) {
|
||||
if (SQLManager.this.closed) {
|
||||
break;
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
long last = System.currentTimeMillis();
|
||||
while (true) {
|
||||
if (SQLManager.this.closed) {
|
||||
break;
|
||||
}
|
||||
boolean hasTask =
|
||||
!globalTasks.isEmpty() || !playerTasks.isEmpty() || !plotTasks.isEmpty()
|
||||
|| !clusterTasks.isEmpty();
|
||||
if (hasTask) {
|
||||
if (SQLManager.this.mySQL && System.currentTimeMillis() - last > 550000
|
||||
|| !isValid()) {
|
||||
last = System.currentTimeMillis();
|
||||
reconnect();
|
||||
}
|
||||
boolean hasTask =
|
||||
!globalTasks.isEmpty() || !playerTasks.isEmpty() || !plotTasks.isEmpty()
|
||||
|| !clusterTasks.isEmpty();
|
||||
if (hasTask) {
|
||||
if (SQLManager.this.mySQL && System.currentTimeMillis() - last > 550000
|
||||
|| !isValid()) {
|
||||
last = System.currentTimeMillis();
|
||||
reconnect();
|
||||
}
|
||||
if (!sendBatch()) {
|
||||
try {
|
||||
if (!getNotifyTasks().isEmpty()) {
|
||||
for (Runnable task : getNotifyTasks()) {
|
||||
TaskManager.runTask(task);
|
||||
}
|
||||
getNotifyTasks().clear();
|
||||
}
|
||||
Thread.sleep(50);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!sendBatch()) {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
if (!getNotifyTasks().isEmpty()) {
|
||||
for (Runnable task : getNotifyTasks()) {
|
||||
TaskManager.runTask(task);
|
||||
}
|
||||
getNotifyTasks().clear();
|
||||
}
|
||||
Thread.sleep(50);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -515,92 +513,74 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
}
|
||||
|
||||
@Override public void createPlotsAndData(final List<Plot> myList, final Runnable whenDone) {
|
||||
addGlobalTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
try {
|
||||
// Create the plots
|
||||
createPlots(myList, new Runnable() {
|
||||
@Override public void run() {
|
||||
try {
|
||||
// Creating datastructures
|
||||
HashMap<PlotId, Plot> plotMap = new HashMap<>();
|
||||
for (Plot plot : myList) {
|
||||
plotMap.put(plot.getId(), plot);
|
||||
}
|
||||
ArrayList<SettingsPair> settings = new ArrayList<>();
|
||||
final ArrayList<UUIDPair> helpers = new ArrayList<>();
|
||||
final ArrayList<UUIDPair> trusted = new ArrayList<>();
|
||||
final ArrayList<UUIDPair> denied = new ArrayList<>();
|
||||
addGlobalTask(() -> {
|
||||
try {
|
||||
// Create the plots
|
||||
createPlots(myList, () -> {
|
||||
try {
|
||||
// Creating datastructures
|
||||
HashMap<PlotId, Plot> plotMap = new HashMap<>();
|
||||
for (Plot plot : myList) {
|
||||
plotMap.put(plot.getId(), plot);
|
||||
}
|
||||
ArrayList<SettingsPair> settings = new ArrayList<>();
|
||||
final ArrayList<UUIDPair> helpers = new ArrayList<>();
|
||||
final ArrayList<UUIDPair> trusted = new ArrayList<>();
|
||||
final ArrayList<UUIDPair> denied = new ArrayList<>();
|
||||
|
||||
// Populating structures
|
||||
try (PreparedStatement stmt = SQLManager.this.connection
|
||||
.prepareStatement(SQLManager.this.GET_ALL_PLOTS);
|
||||
ResultSet result = stmt.executeQuery()) {
|
||||
while (result.next()) {
|
||||
int id = result.getInt("id");
|
||||
int x = result.getInt("plot_id_x");
|
||||
int y = result.getInt("plot_id_z");
|
||||
PlotId plotId = new PlotId(x, y);
|
||||
Plot plot = plotMap.get(plotId);
|
||||
if (plot != null) {
|
||||
settings.add(new SettingsPair(id, plot.getSettings()));
|
||||
for (UUID uuid : plot.getDenied()) {
|
||||
denied.add(new UUIDPair(id, uuid));
|
||||
}
|
||||
for (UUID uuid : plot.getMembers()) {
|
||||
trusted.add(new UUIDPair(id, uuid));
|
||||
}
|
||||
for (UUID uuid : plot.getTrusted()) {
|
||||
helpers.add(new UUIDPair(id, uuid));
|
||||
}
|
||||
}
|
||||
// Populating structures
|
||||
try (PreparedStatement stmt = SQLManager.this.connection
|
||||
.prepareStatement(SQLManager.this.GET_ALL_PLOTS);
|
||||
ResultSet result = stmt.executeQuery()) {
|
||||
while (result.next()) {
|
||||
int id = result.getInt("id");
|
||||
int x = result.getInt("plot_id_x");
|
||||
int y = result.getInt("plot_id_z");
|
||||
PlotId plotId = new PlotId(x, y);
|
||||
Plot plot = plotMap.get(plotId);
|
||||
if (plot != null) {
|
||||
settings.add(new SettingsPair(id, plot.getSettings()));
|
||||
for (UUID uuid : plot.getDenied()) {
|
||||
denied.add(new UUIDPair(id, uuid));
|
||||
}
|
||||
}
|
||||
createSettings(settings, new Runnable() {
|
||||
@Override public void run() {
|
||||
createTiers(helpers, "helpers", new Runnable() {
|
||||
@Override public void run() {
|
||||
createTiers(trusted, "trusted", new Runnable() {
|
||||
@Override public void run() {
|
||||
createTiers(denied, "denied",
|
||||
new Runnable() {
|
||||
@Override public void run() {
|
||||
try {
|
||||
SQLManager.this.connection
|
||||
.commit();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (whenDone != null) {
|
||||
whenDone.run();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
for (UUID uuid : plot.getMembers()) {
|
||||
trusted.add(new UUIDPair(id, uuid));
|
||||
}
|
||||
for (UUID uuid : plot.getTrusted()) {
|
||||
helpers.add(new UUIDPair(id, uuid));
|
||||
}
|
||||
});
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
PlotSquared.debug("&7[WARN] Failed to set all helpers for plots");
|
||||
try {
|
||||
SQLManager.this.connection.commit();
|
||||
} catch (SQLException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
PlotSquared.debug("&7[WARN] Failed to set all helpers for plots");
|
||||
try {
|
||||
SQLManager.this.connection.commit();
|
||||
} catch (SQLException e1) {
|
||||
e1.printStackTrace();
|
||||
createSettings(settings, () -> createTiers(helpers, "helpers",
|
||||
() -> createTiers(trusted, "trusted",
|
||||
() -> createTiers(denied, "denied", () -> {
|
||||
try {
|
||||
SQLManager.this.connection.commit();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (whenDone != null) {
|
||||
whenDone.run();
|
||||
}
|
||||
}))));
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
PlotSquared.debug("&7[WARN] Failed to set all helpers for plots");
|
||||
try {
|
||||
SQLManager.this.connection.commit();
|
||||
} catch (SQLException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
PlotSquared.debug("&7[WARN] Failed to set all helpers for plots");
|
||||
try {
|
||||
SQLManager.this.connection.commit();
|
||||
} catch (SQLException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -676,7 +656,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
stmt.setInt(i * 5 + 1, plot.getId().x);
|
||||
stmt.setInt(i * 5 + 2, plot.getId().y);
|
||||
try {
|
||||
stmt.setString(i * 5 + 3, plot.owner.toString());
|
||||
stmt.setString(i * 5 + 3, plot.guessOwner().toString());
|
||||
} catch (SQLException ignored) {
|
||||
stmt.setString(i * 5 + 3, everyone.toString());
|
||||
}
|
||||
@ -690,7 +670,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
stmt.setInt(i * 6 + 2, plot.getId().x);
|
||||
stmt.setInt(i * 6 + 3, plot.getId().y);
|
||||
try {
|
||||
stmt.setString(i * 6 + 4, plot.owner.toString());
|
||||
stmt.setString(i * 6 + 4, plot.guessOwner().toString());
|
||||
} catch (SQLException ignored) {
|
||||
stmt.setString(i * 6 + 4, everyone.toString());
|
||||
}
|
||||
@ -701,7 +681,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
@Override public void setSQL(PreparedStatement stmt, Plot plot) throws SQLException {
|
||||
stmt.setInt(1, plot.getId().x);
|
||||
stmt.setInt(2, plot.getId().y);
|
||||
stmt.setString(3, plot.owner.toString());
|
||||
stmt.setString(3, plot.guessOwner().toString());
|
||||
stmt.setString(4, plot.getArea().toString());
|
||||
stmt.setTimestamp(5, new Timestamp(plot.getTimestamp()));
|
||||
|
||||
@ -929,11 +909,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
stmt.setInt(1, pair.id);
|
||||
}
|
||||
};
|
||||
addGlobalTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
setBulk(myList, mod, whenDone);
|
||||
}
|
||||
});
|
||||
addGlobalTask(() -> setBulk(myList, mod, whenDone));
|
||||
}
|
||||
|
||||
public void createEmptySettings(final ArrayList<Integer> myList, final Runnable whenDone) {
|
||||
@ -977,20 +953,15 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
stmt.setInt(1, id);
|
||||
}
|
||||
};
|
||||
addGlobalTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
setBulk(myList, mod, whenDone);
|
||||
}
|
||||
});
|
||||
addGlobalTask(() -> setBulk(myList, mod, whenDone));
|
||||
}
|
||||
|
||||
public void createPlotSafe(final Plot plot, final Runnable success, final Runnable failure) {
|
||||
final long timestamp = plot.getTimestamp();
|
||||
addPlotTask(plot, new UniqueStatement("createPlotSafe_" + plot.hashCode()) {
|
||||
@Override public void set(PreparedStatement stmt) throws SQLException {
|
||||
stmt.setInt(1, plot.getId().x);
|
||||
stmt.setInt(2, plot.getId().y);
|
||||
stmt.setString(3, plot.owner.toString());
|
||||
stmt.setString(3, plot.guessOwner().toString());
|
||||
stmt.setString(4, plot.getArea().toString());
|
||||
stmt.setTimestamp(5, new Timestamp(plot.getTimestamp()));
|
||||
stmt.setString(6, plot.getArea().toString());
|
||||
@ -1057,7 +1028,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
@Override public void set(PreparedStatement stmt) throws SQLException {
|
||||
stmt.setInt(1, plot.getId().x);
|
||||
stmt.setInt(2, plot.getId().y);
|
||||
stmt.setString(3, plot.owner.toString());
|
||||
stmt.setString(3, plot.guessOwner().toString());
|
||||
stmt.setString(4, plot.getArea().toString());
|
||||
stmt.setTimestamp(5, new Timestamp(plot.getTimestamp()));
|
||||
}
|
||||
@ -1351,7 +1322,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
@Override public void delete(final Plot plot) {
|
||||
PlotSquared.debug(
|
||||
"Deleting plot... Id: " + plot.getId() + " World: " + plot.getWorldName() + " Owner: "
|
||||
+ plot.owner + " Index: " + plot.temp);
|
||||
+ plot.guessOwner() + " Index: " + plot.temp);
|
||||
deleteSettings(plot);
|
||||
deleteDenied(plot);
|
||||
deleteHelpers(plot);
|
||||
@ -1379,7 +1350,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
@Override public void createPlotSettings(final int id, Plot plot) {
|
||||
PlotSquared.debug(
|
||||
"Creating plot... Id: " + plot.getId() + " World: " + plot.getWorldName() + " Owner: "
|
||||
+ plot.owner + " Index: " + id);
|
||||
+ plot.guessOwner() + " Index: " + id);
|
||||
addPlotTask(plot, new UniqueStatement("createPlotSettings") {
|
||||
@Override public void set(PreparedStatement stmt) throws SQLException {
|
||||
stmt.setInt(1, id);
|
||||
@ -1685,8 +1656,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
time = System.currentTimeMillis() + id;
|
||||
}
|
||||
}
|
||||
Plot p = new Plot(plot_id, user, new HashSet<UUID>(), new HashSet<UUID>(),
|
||||
new HashSet<UUID>(), "", null, null, null,
|
||||
Plot p = new Plot(plot_id, user, new HashSet<>(), new HashSet<>(),
|
||||
new HashSet<>(), "", null, null, null,
|
||||
new boolean[] {false, false, false, false}, time, id);
|
||||
HashMap<PlotId, Plot> map = newPlots.get(areaid);
|
||||
if (map != null) {
|
||||
@ -2036,103 +2007,96 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
* Purge all plots with the following database IDs
|
||||
*/
|
||||
@Override public void purgeIds(final Set<Integer> uniqueIds) {
|
||||
addGlobalTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (!uniqueIds.isEmpty()) {
|
||||
try {
|
||||
ArrayList<Integer> uniqueIdsList = new ArrayList<Integer>(uniqueIds);
|
||||
String stmt_prefix = "";
|
||||
int size = uniqueIdsList.size();
|
||||
int packet = 990;
|
||||
int amount = size / packet;
|
||||
int count = 0;
|
||||
int last = -1;
|
||||
for (int j = 0; j <= amount; j++) {
|
||||
PlotSquared.debug("Purging " + (j * packet) + " / " + size);
|
||||
List<Integer> subList =
|
||||
uniqueIdsList.subList(j * packet, Math.min(size, (j + 1) * packet));
|
||||
if (subList.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
StringBuilder idstr2 = new StringBuilder("");
|
||||
stmt_prefix = "";
|
||||
for (Integer id : subList) {
|
||||
idstr2.append(stmt_prefix).append(id);
|
||||
stmt_prefix = " OR `id` = ";
|
||||
}
|
||||
stmt_prefix = "";
|
||||
StringBuilder idstr = new StringBuilder();
|
||||
for (Integer id : subList) {
|
||||
idstr.append(stmt_prefix).append(id);
|
||||
stmt_prefix = " OR `plot_plot_id` = ";
|
||||
}
|
||||
PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"DELETE FROM `" + SQLManager.this.prefix
|
||||
+ "plot_helpers` WHERE `plot_plot_id` = " + idstr);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
stmt = SQLManager.this.connection.prepareStatement(
|
||||
"DELETE FROM `" + SQLManager.this.prefix
|
||||
+ "plot_denied` WHERE `plot_plot_id` = " + idstr);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
stmt = SQLManager.this.connection.prepareStatement(
|
||||
"DELETE FROM `" + SQLManager.this.prefix
|
||||
+ "plot_settings` WHERE `plot_plot_id` = " + idstr);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
stmt = SQLManager.this.connection.prepareStatement(
|
||||
"DELETE FROM `" + SQLManager.this.prefix
|
||||
+ "plot_trusted` WHERE `plot_plot_id` = " + idstr);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
stmt = SQLManager.this.connection.prepareStatement(
|
||||
"DELETE FROM `" + SQLManager.this.prefix + "plot` WHERE `id` = "
|
||||
+ idstr2);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
commit();
|
||||
addGlobalTask(() -> {
|
||||
if (!uniqueIds.isEmpty()) {
|
||||
try {
|
||||
ArrayList<Integer> uniqueIdsList = new ArrayList<>(uniqueIds);
|
||||
String stmt_prefix = "";
|
||||
int size = uniqueIdsList.size();
|
||||
int packet = 990;
|
||||
int amount = size / packet;
|
||||
for (int j = 0; j <= amount; j++) {
|
||||
PlotSquared.debug("Purging " + (j * packet) + " / " + size);
|
||||
List<Integer> subList =
|
||||
uniqueIdsList.subList(j * packet, Math.min(size, (j + 1) * packet));
|
||||
if (subList.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
PlotSquared.debug("&c[ERROR] FAILED TO PURGE PLOTS!");
|
||||
return;
|
||||
StringBuilder idstr2 = new StringBuilder("");
|
||||
stmt_prefix = "";
|
||||
for (Integer id : subList) {
|
||||
idstr2.append(stmt_prefix).append(id);
|
||||
stmt_prefix = " OR `id` = ";
|
||||
}
|
||||
stmt_prefix = "";
|
||||
StringBuilder idstr = new StringBuilder();
|
||||
for (Integer id : subList) {
|
||||
idstr.append(stmt_prefix).append(id);
|
||||
stmt_prefix = " OR `plot_plot_id` = ";
|
||||
}
|
||||
PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"DELETE FROM `" + SQLManager.this.prefix
|
||||
+ "plot_helpers` WHERE `plot_plot_id` = " + idstr);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
stmt = SQLManager.this.connection.prepareStatement(
|
||||
"DELETE FROM `" + SQLManager.this.prefix
|
||||
+ "plot_denied` WHERE `plot_plot_id` = " + idstr);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
stmt = SQLManager.this.connection.prepareStatement(
|
||||
"DELETE FROM `" + SQLManager.this.prefix
|
||||
+ "plot_settings` WHERE `plot_plot_id` = " + idstr);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
stmt = SQLManager.this.connection.prepareStatement(
|
||||
"DELETE FROM `" + SQLManager.this.prefix
|
||||
+ "plot_trusted` WHERE `plot_plot_id` = " + idstr);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
stmt = SQLManager.this.connection.prepareStatement(
|
||||
"DELETE FROM `" + SQLManager.this.prefix + "plot` WHERE `id` = "
|
||||
+ idstr2);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
commit();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
PlotSquared.debug("&c[ERROR] FAILED TO PURGE PLOTS!");
|
||||
return;
|
||||
}
|
||||
PlotSquared.debug("&6[INFO] SUCCESSFULLY PURGED " + uniqueIds.size() + " PLOTS!");
|
||||
}
|
||||
PlotSquared.debug("&6[INFO] SUCCESSFULLY PURGED " + uniqueIds.size() + " PLOTS!");
|
||||
});
|
||||
}
|
||||
|
||||
@Override public void purge(final PlotArea area, final Set<PlotId> plots) {
|
||||
addGlobalTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
try (PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"SELECT `id`, `plot_id_x`, `plot_id_z` FROM `" + SQLManager.this.prefix
|
||||
+ "plot` WHERE `world` = ?")) {
|
||||
stmt.setString(1, area.toString());
|
||||
Set<Integer> ids;
|
||||
try (ResultSet r = stmt.executeQuery()) {
|
||||
ids = new HashSet<>();
|
||||
while (r.next()) {
|
||||
PlotId plot_id =
|
||||
new PlotId(r.getInt("plot_id_x"), r.getInt("plot_id_z"));
|
||||
if (plots.contains(plot_id)) {
|
||||
ids.add(r.getInt("id"));
|
||||
}
|
||||
addGlobalTask(() -> {
|
||||
try (PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"SELECT `id`, `plot_id_x`, `plot_id_z` FROM `" + SQLManager.this.prefix
|
||||
+ "plot` WHERE `world` = ?")) {
|
||||
stmt.setString(1, area.toString());
|
||||
Set<Integer> ids;
|
||||
try (ResultSet r = stmt.executeQuery()) {
|
||||
ids = new HashSet<>();
|
||||
while (r.next()) {
|
||||
PlotId plot_id = new PlotId(r.getInt("plot_id_x"), r.getInt("plot_id_z"));
|
||||
if (plots.contains(plot_id)) {
|
||||
ids.add(r.getInt("id"));
|
||||
}
|
||||
}
|
||||
purgeIds(ids);
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
PlotSquared.debug("&c[ERROR] FAILED TO PURGE AREA '" + area + "'!");
|
||||
}
|
||||
for (Iterator<PlotId> iterator = plots.iterator(); iterator.hasNext(); ) {
|
||||
PlotId plotId = iterator.next();
|
||||
iterator.remove();
|
||||
PlotId id = new PlotId(plotId.x, plotId.y);
|
||||
area.removePlot(id);
|
||||
}
|
||||
purgeIds(ids);
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
PlotSquared.debug("&c[ERROR] FAILED TO PURGE AREA '" + area + "'!");
|
||||
}
|
||||
for (Iterator<PlotId> iterator = plots.iterator(); iterator.hasNext(); ) {
|
||||
PlotId plotId = iterator.next();
|
||||
iterator.remove();
|
||||
PlotId id = new PlotId(plotId.x, plotId.y);
|
||||
area.removePlot(id);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -2523,11 +2487,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
}
|
||||
|
||||
resultSet.close();
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
result.run(metaMap);
|
||||
}
|
||||
});
|
||||
TaskManager.runTaskAsync(() -> result.run(metaMap));
|
||||
}
|
||||
|
||||
});
|
||||
@ -2591,11 +2551,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
}
|
||||
cluster = new PlotCluster(null, pos1, pos2, user, id);
|
||||
clusters.put(id, cluster);
|
||||
Set<PlotCluster> set = newClusters.get(areaid);
|
||||
if (set == null) {
|
||||
set = new HashSet<>();
|
||||
newClusters.put(areaid, set);
|
||||
}
|
||||
Set<PlotCluster> set =
|
||||
newClusters.computeIfAbsent(areaid, k -> new HashSet<>());
|
||||
set.add(cluster);
|
||||
}
|
||||
//Getting helpers
|
||||
@ -2973,10 +2930,10 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
continue;
|
||||
}
|
||||
// owner
|
||||
if (!plot.owner.equals(dataPlot.owner)) {
|
||||
PlotSquared
|
||||
.debug("&8 - &7Setting owner: " + plot + " -> " + MainUtil.getName(plot.owner));
|
||||
setOwner(plot, plot.owner);
|
||||
if (!plot.guessOwner().equals(dataPlot.guessOwner())) {
|
||||
PlotSquared.debug(
|
||||
"&8 - &7Setting owner: " + plot + " -> " + MainUtil.getName(plot.guessOwner()));
|
||||
setOwner(plot, plot.guessOwner());
|
||||
}
|
||||
// trusted
|
||||
if (!plot.getTrusted().equals(dataPlot.getTrusted())) {
|
||||
@ -3069,87 +3026,83 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
@Override
|
||||
public void replaceWorld(final String oldWorld, final String newWorld, final PlotId min,
|
||||
final PlotId max) {
|
||||
addGlobalTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (min == null) {
|
||||
try (PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"UPDATE `" + SQLManager.this.prefix
|
||||
+ "plot` SET `world` = ? WHERE `world` = ?")) {
|
||||
stmt.setString(1, newWorld);
|
||||
stmt.setString(2, oldWorld);
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try (PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"UPDATE `" + SQLManager.this.prefix
|
||||
+ "cluster` SET `world` = ? WHERE `world` = ?")) {
|
||||
stmt.setString(1, newWorld);
|
||||
stmt.setString(2, oldWorld);
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
try (PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"UPDATE `" + SQLManager.this.prefix
|
||||
+ "plot` SET `world` = ? WHERE `world` = ? AND `plot_id_x` BETWEEN ? AND ? AND `plot_id_z` BETWEEN ? AND ?")) {
|
||||
stmt.setString(1, newWorld);
|
||||
stmt.setString(2, oldWorld);
|
||||
stmt.setInt(3, min.x);
|
||||
stmt.setInt(4, max.x);
|
||||
stmt.setInt(5, min.y);
|
||||
stmt.setInt(6, max.y);
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try (PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"UPDATE `" + SQLManager.this.prefix
|
||||
+ "cluster` SET `world` = ? WHERE `world` = ? AND `pos1_x` <= ? AND `pos1_z` <= ? AND `pos2_x` >= ? AND `pos2_z` >= ?")) {
|
||||
stmt.setString(1, newWorld);
|
||||
stmt.setString(2, oldWorld);
|
||||
stmt.setInt(3, max.x);
|
||||
stmt.setInt(4, max.y);
|
||||
stmt.setInt(5, min.x);
|
||||
stmt.setInt(6, min.y);
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
addGlobalTask(() -> {
|
||||
if (min == null) {
|
||||
try (PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"UPDATE `" + SQLManager.this.prefix
|
||||
+ "plot` SET `world` = ? WHERE `world` = ?")) {
|
||||
stmt.setString(1, newWorld);
|
||||
stmt.setString(2, oldWorld);
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try (PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"UPDATE `" + SQLManager.this.prefix
|
||||
+ "cluster` SET `world` = ? WHERE `world` = ?")) {
|
||||
stmt.setString(1, newWorld);
|
||||
stmt.setString(2, oldWorld);
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
try (PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"UPDATE `" + SQLManager.this.prefix
|
||||
+ "plot` SET `world` = ? WHERE `world` = ? AND `plot_id_x` BETWEEN ? AND ? AND `plot_id_z` BETWEEN ? AND ?")) {
|
||||
stmt.setString(1, newWorld);
|
||||
stmt.setString(2, oldWorld);
|
||||
stmt.setInt(3, min.x);
|
||||
stmt.setInt(4, max.x);
|
||||
stmt.setInt(5, min.y);
|
||||
stmt.setInt(6, max.y);
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try (PreparedStatement stmt = SQLManager.this.connection.prepareStatement(
|
||||
"UPDATE `" + SQLManager.this.prefix
|
||||
+ "cluster` SET `world` = ? WHERE `world` = ? AND `pos1_x` <= ? AND `pos1_z` <= ? AND `pos2_x` >= ? AND `pos2_z` >= ?")) {
|
||||
stmt.setString(1, newWorld);
|
||||
stmt.setString(2, oldWorld);
|
||||
stmt.setInt(3, max.x);
|
||||
stmt.setInt(4, max.y);
|
||||
stmt.setInt(5, min.x);
|
||||
stmt.setInt(6, min.y);
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override public void replaceUUID(final UUID old, final UUID now) {
|
||||
addGlobalTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
try (Statement stmt = SQLManager.this.connection.createStatement()) {
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "cluster` SET `owner` = '" + now
|
||||
.toString() + "' WHERE `owner` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "cluster_helpers` SET `user_uuid` = '"
|
||||
+ now.toString() + "' WHERE `user_uuid` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "cluster_invited` SET `user_uuid` = '"
|
||||
+ now.toString() + "' WHERE `user_uuid` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "plot` SET `owner` = '" + now
|
||||
.toString() + "' WHERE `owner` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "plot_denied` SET `user_uuid` = '"
|
||||
+ now.toString() + "' WHERE `user_uuid` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "plot_helpers` SET `user_uuid` = '"
|
||||
+ now.toString() + "' WHERE `user_uuid` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "plot_trusted` SET `user_uuid` = '"
|
||||
+ now.toString() + "' WHERE `user_uuid` = '" + old.toString() + '\'');
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
addGlobalTask(() -> {
|
||||
try (Statement stmt = SQLManager.this.connection.createStatement()) {
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "cluster` SET `owner` = '" + now
|
||||
.toString() + "' WHERE `owner` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "cluster_helpers` SET `user_uuid` = '"
|
||||
+ now.toString() + "' WHERE `user_uuid` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "cluster_invited` SET `user_uuid` = '"
|
||||
+ now.toString() + "' WHERE `user_uuid` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "plot` SET `owner` = '" + now.toString()
|
||||
+ "' WHERE `owner` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "plot_denied` SET `user_uuid` = '" + now
|
||||
.toString() + "' WHERE `user_uuid` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "plot_helpers` SET `user_uuid` = '" + now
|
||||
.toString() + "' WHERE `user_uuid` = '" + old.toString() + '\'');
|
||||
stmt.executeUpdate(
|
||||
"UPDATE `" + SQLManager.this.prefix + "plot_trusted` SET `user_uuid` = '" + now
|
||||
.toString() + "' WHERE `user_uuid` = '" + old.toString() + '\'');
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -146,7 +146,7 @@ public class FlagManager {
|
||||
* @return
|
||||
*/
|
||||
public static <V> V getPlotFlagRaw(Plot plot, Flag<V> flag) {
|
||||
if (plot.owner == null) {
|
||||
if (plot.guessOwner() == null) {
|
||||
return null;
|
||||
}
|
||||
return getSettingFlag(plot.getArea(), plot.getSettings(), flag);
|
||||
|
@ -244,7 +244,6 @@ public class ClassicPlotManager extends SquarePlotManager {
|
||||
Location bot = plot.getExtendedBottomAbs()
|
||||
.subtract(plot.getMerged(3) ? 0 : 1, 0, plot.getMerged(0) ? 0 : 1);
|
||||
Location top = plot.getExtendedTopAbs().add(1, 0, 1);
|
||||
PseudoRandom random = new PseudoRandom();
|
||||
LocalBlockQueue queue = plotArea.getQueue(false);
|
||||
int y = dpw.WALL_HEIGHT + 1;
|
||||
if (!plot.getMerged(0)) {
|
||||
|
@ -6,12 +6,10 @@ import com.github.intellectualsites.plotsquared.plot.util.MathMan;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.block.ScopedLocalBlockQueue;
|
||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class HybridGen extends IndependentPlotGenerator {
|
||||
|
||||
@Override public String getName() {
|
||||
return PlotSquared.imp().getPluginName();
|
||||
return PlotSquared.get().IMP.getPluginName();
|
||||
}
|
||||
|
||||
private void placeSchem(HybridPlotWorld world, ScopedLocalBlockQueue result, short relativeX,
|
||||
@ -41,8 +39,6 @@ public class HybridGen extends IndependentPlotGenerator {
|
||||
}
|
||||
// Coords
|
||||
Location min = result.getMin();
|
||||
int cx = min.getX() >> 4;
|
||||
int cz = min.getZ() >> 4;
|
||||
int bx = (min.getX()) - hpw.ROAD_OFFSET_X;
|
||||
int bz = (min.getZ()) - hpw.ROAD_OFFSET_Z;
|
||||
short rbx;
|
||||
@ -86,7 +82,6 @@ public class HybridGen extends IndependentPlotGenerator {
|
||||
}
|
||||
}
|
||||
// generation
|
||||
HashMap<Integer, BaseBlock[]> sch = hpw.G_SCH;
|
||||
for (short x = 0; x < 16; x++) {
|
||||
if (gx[x]) {
|
||||
for (short z = 0; z < 16; z++) {
|
||||
|
@ -197,12 +197,10 @@ public class HybridPlotManager extends ClassicPlotManager {
|
||||
// And finally set the schematic, the y value is unimportant for this function
|
||||
pastePlotSchematic(dpw, queue, bot, top);
|
||||
}
|
||||
}, new Runnable() {
|
||||
@Override public void run() {
|
||||
queue.enqueue();
|
||||
// And notify whatever called this when plot clearing is done
|
||||
GlobalBlockQueue.IMP.addTask(whenDone);
|
||||
}
|
||||
}, () -> {
|
||||
queue.enqueue();
|
||||
// And notify whatever called this when plot clearing is done
|
||||
GlobalBlockQueue.IMP.addTask(whenDone);
|
||||
}, 10);
|
||||
return true;
|
||||
}
|
||||
|
@ -212,11 +212,7 @@ public abstract class HybridUtils {
|
||||
PlotSquared.debug("&d - Potentially skipping 1024 chunks");
|
||||
PlotSquared.debug("&d - TODO: recommend chunkster if corrupt");
|
||||
}
|
||||
GlobalBlockQueue.IMP.addTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
TaskManager.runTaskLater(task, 20);
|
||||
}
|
||||
});
|
||||
GlobalBlockQueue.IMP.addTask(() -> TaskManager.runTaskLater(task, 20));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -158,23 +158,21 @@ public class PlotListener {
|
||||
if (titles) {
|
||||
if (!C.TITLE_ENTERED_PLOT.s().isEmpty() || !C.TITLE_ENTERED_PLOT_SUB.s()
|
||||
.isEmpty()) {
|
||||
TaskManager.runTaskLaterAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
Plot lastPlot = player.getMeta(PlotPlayer.META_LAST_PLOT);
|
||||
if ((lastPlot != null) && plot.getId().equals(lastPlot.getId())) {
|
||||
Map<String, String> replacements = new HashMap<>();
|
||||
replacements.put("%x%", String.valueOf(lastPlot.getId().x));
|
||||
replacements.put("%z%", lastPlot.getId().y + "");
|
||||
replacements.put("%world%", plot.getArea().toString());
|
||||
replacements.put("%greeting%", greeting);
|
||||
replacements.put("%alias", plot.toString());
|
||||
replacements.put("%s", MainUtil.getName(plot.owner));
|
||||
String main = StringMan
|
||||
.replaceFromMap(C.TITLE_ENTERED_PLOT.s(), replacements);
|
||||
String sub = StringMan
|
||||
.replaceFromMap(C.TITLE_ENTERED_PLOT_SUB.s(), replacements);
|
||||
AbstractTitle.sendTitle(player, main, sub);
|
||||
}
|
||||
TaskManager.runTaskLaterAsync(() -> {
|
||||
Plot lastPlot = player.getMeta(PlotPlayer.META_LAST_PLOT);
|
||||
if ((lastPlot != null) && plot.getId().equals(lastPlot.getId())) {
|
||||
Map<String, String> replacements = new HashMap<>();
|
||||
replacements.put("%x%", String.valueOf(lastPlot.getId().x));
|
||||
replacements.put("%z%", lastPlot.getId().y + "");
|
||||
replacements.put("%world%", plot.getArea().toString());
|
||||
replacements.put("%greeting%", greeting);
|
||||
replacements.put("%alias", plot.toString());
|
||||
replacements.put("%s", MainUtil.getName(plot.guessOwner()));
|
||||
String main =
|
||||
StringMan.replaceFromMap(C.TITLE_ENTERED_PLOT.s(), replacements);
|
||||
String sub = StringMan
|
||||
.replaceFromMap(C.TITLE_ENTERED_PLOT_SUB.s(), replacements);
|
||||
AbstractTitle.sendTitle(player, main, sub);
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
|
@ -805,14 +805,12 @@ public class Plot {
|
||||
Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
if (queue.isEmpty()) {
|
||||
Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
for (RegionWrapper region : regions) {
|
||||
Location[] corners = region.getCorners(getWorldName());
|
||||
ChunkManager.manager.clearAllEntities(corners[0], corners[1]);
|
||||
}
|
||||
TaskManager.runTask(whenDone);
|
||||
Runnable run = () -> {
|
||||
for (RegionWrapper region : regions) {
|
||||
Location[] corners = region.getCorners(getWorldName());
|
||||
ChunkManager.manager.clearAllEntities(corners[0], corners[1]);
|
||||
}
|
||||
TaskManager.runTask(whenDone);
|
||||
};
|
||||
for (Plot current : plots) {
|
||||
if (isDelete || current.owner == null) {
|
||||
@ -927,11 +925,9 @@ public class Plot {
|
||||
current.setMerged(merged);
|
||||
}
|
||||
if (createSign) {
|
||||
GlobalBlockQueue.IMP.addTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
for (Plot current : plots) {
|
||||
current.setSign(MainUtil.getName(current.owner));
|
||||
}
|
||||
GlobalBlockQueue.IMP.addTask(() -> {
|
||||
for (Plot current : plots) {
|
||||
current.setSign(MainUtil.getName(current.owner));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -950,11 +946,7 @@ public class Plot {
|
||||
if (!isLoaded())
|
||||
return;
|
||||
if (!PlotSquared.get().isMainThread(Thread.currentThread())) {
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
Plot.this.setSign(name);
|
||||
}
|
||||
});
|
||||
TaskManager.runTask(() -> Plot.this.setSign(name));
|
||||
return;
|
||||
}
|
||||
PlotManager manager = this.area.getPlotManager();
|
||||
@ -1044,13 +1036,11 @@ public class Plot {
|
||||
return false;
|
||||
}
|
||||
final Set<Plot> plots = this.getConnectedPlots();
|
||||
this.clear(false, true, new Runnable() {
|
||||
@Override public void run() {
|
||||
for (Plot current : plots) {
|
||||
current.unclaim();
|
||||
}
|
||||
TaskManager.runTask(whenDone);
|
||||
this.clear(false, true, () -> {
|
||||
for (Plot current : plots) {
|
||||
current.unclaim();
|
||||
}
|
||||
TaskManager.runTask(whenDone);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
@ -1483,12 +1473,10 @@ public class Plot {
|
||||
this.getDenied().clear();
|
||||
this.settings = new PlotSettings();
|
||||
if (this.area.addPlot(this)) {
|
||||
DBFunc.createPlotAndSettings(this, new Runnable() {
|
||||
@Override public void run() {
|
||||
PlotArea plotworld = Plot.this.area;
|
||||
if (notify && plotworld.AUTO_MERGE) {
|
||||
Plot.this.autoMerge(-1, Integer.MAX_VALUE, uuid, true);
|
||||
}
|
||||
DBFunc.createPlotAndSettings(this, () -> {
|
||||
PlotArea plotworld = Plot.this.area;
|
||||
if (notify && plotworld.AUTO_MERGE) {
|
||||
Plot.this.autoMerge(-1, Integer.MAX_VALUE, uuid, true);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
@ -1837,16 +1825,14 @@ public class Plot {
|
||||
TaskManager.runTask(whenDone);
|
||||
}
|
||||
} else {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
String name = Plot.this.id + "," + Plot.this.area + ',' + MainUtil
|
||||
.getName(Plot.this.owner);
|
||||
boolean result = SchematicHandler.manager.save(value,
|
||||
Settings.Paths.SCHEMATICS + File.separator + name + ".schematic");
|
||||
if (whenDone != null) {
|
||||
whenDone.value = result;
|
||||
TaskManager.runTask(whenDone);
|
||||
}
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
String name = Plot.this.id + "," + Plot.this.area + ',' + MainUtil
|
||||
.getName(Plot.this.owner);
|
||||
boolean result = SchematicHandler.manager.save(value,
|
||||
Settings.Paths.SCHEMATICS + File.separator + name + ".schematic");
|
||||
if (whenDone != null) {
|
||||
whenDone.value = result;
|
||||
TaskManager.runTask(whenDone);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -2556,9 +2542,7 @@ public class Plot {
|
||||
}
|
||||
Location gtopabs = this.area.getPlotAbs(top).getTopAbs();
|
||||
Location gbotabs = this.area.getPlotAbs(bot).getBottomAbs();
|
||||
for (PlotId id : MainUtil.getPlotSelectionIds(bot, top)) {
|
||||
visited.add(id);
|
||||
}
|
||||
visited.addAll(MainUtil.getPlotSelectionIds(bot, top));
|
||||
for (int x = bot.x; x <= top.x; x++) {
|
||||
Plot plot = this.area.getPlotAbs(new PlotId(x, top.y));
|
||||
if (plot.getMerged(2)) {
|
||||
@ -2625,12 +2609,10 @@ public class Plot {
|
||||
* - Usually called when the plot state changes (unclaimed/claimed/flag change etc)
|
||||
*/
|
||||
public void reEnter() {
|
||||
TaskManager.runTaskLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
for (PlotPlayer pp : Plot.this.getPlayersInPlot()) {
|
||||
PlotListener.plotExit(pp, Plot.this);
|
||||
PlotListener.plotEntry(pp, Plot.this);
|
||||
}
|
||||
TaskManager.runTaskLater(() -> {
|
||||
for (PlotPlayer pp : Plot.this.getPlayersInPlot()) {
|
||||
PlotListener.plotExit(pp, Plot.this);
|
||||
PlotListener.plotEntry(pp, Plot.this);
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
@ -2686,17 +2668,15 @@ public class Plot {
|
||||
MainUtil.sendMessage(player, C.TELEPORT_IN_SECONDS, Settings.Teleport.DELAY + "");
|
||||
final String name = player.getName();
|
||||
TaskManager.TELEPORT_QUEUE.add(name);
|
||||
TaskManager.runTaskLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (!TaskManager.TELEPORT_QUEUE.contains(name)) {
|
||||
MainUtil.sendMessage(player, C.TELEPORT_FAILED);
|
||||
return;
|
||||
}
|
||||
TaskManager.TELEPORT_QUEUE.remove(name);
|
||||
if (player.isOnline()) {
|
||||
MainUtil.sendMessage(player, C.TELEPORTED_TO_PLOT);
|
||||
player.teleport(location);
|
||||
}
|
||||
TaskManager.runTaskLater(() -> {
|
||||
if (!TaskManager.TELEPORT_QUEUE.contains(name)) {
|
||||
MainUtil.sendMessage(player, C.TELEPORT_FAILED);
|
||||
return;
|
||||
}
|
||||
TaskManager.TELEPORT_QUEUE.remove(name);
|
||||
if (player.isOnline()) {
|
||||
MainUtil.sendMessage(player, C.TELEPORTED_TO_PLOT);
|
||||
player.teleport(location);
|
||||
}
|
||||
}, Settings.Teleport.DELAY * 20);
|
||||
return true;
|
||||
@ -2883,11 +2863,8 @@ public class Plot {
|
||||
final Location pos2 = corners[1];
|
||||
Location newPos = pos1.clone().add(offsetX, 0, offsetZ);
|
||||
newPos.setWorld(destination.getWorldName());
|
||||
ChunkManager.manager.copyRegion(pos1, pos2, newPos, new Runnable() {
|
||||
@Override public void run() {
|
||||
ChunkManager.manager.regenerateRegion(pos1, pos2, false, task);
|
||||
}
|
||||
});
|
||||
ChunkManager.manager.copyRegion(pos1, pos2, newPos,
|
||||
() -> ChunkManager.manager.regenerateRegion(pos1, pos2, false, task));
|
||||
}
|
||||
};
|
||||
Runnable swap = new Runnable() {
|
||||
|
@ -179,7 +179,7 @@ public abstract class PlotArea {
|
||||
}
|
||||
|
||||
public Set<PlotCluster> getClusters() {
|
||||
return this.clusters == null ? new HashSet<PlotCluster>() : this.clusters.getAll();
|
||||
return this.clusters == null ? new HashSet<>() : this.clusters.getAll();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -496,7 +496,7 @@ public abstract class PlotArea {
|
||||
final HashSet<Plot> myPlots = new HashSet<>();
|
||||
foreachPlotAbs(new RunnableVal<Plot>() {
|
||||
@Override public void run(Plot value) {
|
||||
if (uuid.equals(value.owner)) {
|
||||
if (uuid.equals(value.guessOwner())) {
|
||||
myPlots.add(value);
|
||||
}
|
||||
}
|
||||
@ -657,12 +657,7 @@ public abstract class PlotArea {
|
||||
|
||||
public Set<Plot> getBasePlots() {
|
||||
HashSet<Plot> myPlots = new HashSet<>(getPlots());
|
||||
Iterator<Plot> iterator = myPlots.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
if (!iterator.next().isBasePlot()) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
myPlots.removeIf(plot -> !plot.isBasePlot());
|
||||
return myPlots;
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ public abstract class PlotBlock implements ConfigurationSerializable {
|
||||
|
||||
public static PlotBlock get(@NonNull final Object type) {
|
||||
if (blockRegistry == null) {
|
||||
blockRegistry = PlotSquared.imp().getBlockRegistry();
|
||||
blockRegistry = PlotSquared.get().IMP.getBlockRegistry();
|
||||
if (blockRegistry == null) {
|
||||
throw new UnsupportedOperationException(
|
||||
"The PlotSquared implementation has not registered a custom block registry."
|
||||
@ -99,7 +99,7 @@ public abstract class PlotBlock implements ConfigurationSerializable {
|
||||
|
||||
public <T> T to(@NonNull final Class<T> clazz) {
|
||||
if (blockRegistry == null) {
|
||||
blockRegistry = PlotSquared.imp().getBlockRegistry();
|
||||
blockRegistry = PlotSquared.get().IMP.getBlockRegistry();
|
||||
if (blockRegistry == null) {
|
||||
throw new UnsupportedOperationException(
|
||||
"The PlotSquared implementation has not registered a custom block registry."
|
||||
|
@ -5,7 +5,7 @@ import java.util.UUID;
|
||||
|
||||
public class PlotHandler {
|
||||
public static boolean sameOwners(final Plot plot1, final Plot plot2) {
|
||||
if (plot1.owner == null || plot2.owner == null) {
|
||||
if (plot1.guessOwner() == null || plot2.guessOwner() == null) {
|
||||
return false;
|
||||
}
|
||||
final Set<UUID> owners = plot1.getOwners();
|
||||
|
@ -5,6 +5,8 @@ import com.github.intellectualsites.plotsquared.plot.config.C;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.chat.PlainChatManager;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.ChatManager;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class PlotMessage {
|
||||
|
||||
private Object builder;
|
||||
@ -14,8 +16,8 @@ public class PlotMessage {
|
||||
reset(ChatManager.manager);
|
||||
} catch (Throwable e) {
|
||||
PlotSquared.debug(
|
||||
PlotSquared.imp().getPluginName() + " doesn't support fancy chat for " + PlotSquared
|
||||
.get().IMP.getServerVersion());
|
||||
PlotSquared.imp().getPluginName() + " doesn't support fancy chat for " + Arrays
|
||||
.toString(PlotSquared.get().IMP.getServerVersion()));
|
||||
ChatManager.manager = new PlainChatManager();
|
||||
reset(ChatManager.manager);
|
||||
}
|
||||
|
@ -222,7 +222,6 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
||||
return getClusterCount(getLocation().getWorld());
|
||||
}
|
||||
final AtomicInteger count = new AtomicInteger(0);
|
||||
final UUID uuid = getUUID();
|
||||
PlotSquared.get().foreachPlotArea(new RunnableVal<PlotArea>() {
|
||||
@Override public void run(PlotArea value) {
|
||||
for (PlotCluster cluster : value.getClusters()) {
|
||||
@ -259,7 +258,6 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
||||
}
|
||||
|
||||
public int getClusterCount(String world) {
|
||||
UUID uuid = getUUID();
|
||||
int count = 0;
|
||||
for (PlotArea area : PlotSquared.get().getPlotAreas(world)) {
|
||||
for (PlotCluster cluster : area.getClusters()) {
|
||||
@ -569,31 +567,27 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
||||
final Location loc =
|
||||
new Location(plot.getWorldName(), x, y, z);
|
||||
if (plot.isLoaded()) {
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (getMeta("teleportOnLogin", true)) {
|
||||
teleport(loc);
|
||||
sendMessage(C.TELEPORTED_TO_PLOT.f()
|
||||
+ " (quitLoc) (" + plotX + ","
|
||||
+ plotZ + ")");
|
||||
}
|
||||
TaskManager.runTask(() -> {
|
||||
if (getMeta("teleportOnLogin", true)) {
|
||||
teleport(loc);
|
||||
sendMessage(C.TELEPORTED_TO_PLOT.f()
|
||||
+ " (quitLoc) (" + plotX + ","
|
||||
+ plotZ + ")");
|
||||
}
|
||||
});
|
||||
} else if (!PlotSquared.get()
|
||||
.isMainThread(Thread.currentThread())) {
|
||||
if (getMeta("teleportOnLogin", true)) {
|
||||
if (plot.teleportPlayer(PlotPlayer.this)) {
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (getMeta("teleportOnLogin",
|
||||
true)) {
|
||||
teleport(loc);
|
||||
sendMessage(
|
||||
C.TELEPORTED_TO_PLOT.f()
|
||||
+ " (quitLoc-unloaded) ("
|
||||
+ plotX + ","
|
||||
+ plotZ + ")");
|
||||
}
|
||||
TaskManager.runTask(() -> {
|
||||
if (getMeta("teleportOnLogin",
|
||||
true)) {
|
||||
teleport(loc);
|
||||
sendMessage(
|
||||
C.TELEPORTED_TO_PLOT.f()
|
||||
+ " (quitLoc-unloaded) ("
|
||||
+ plotX + "," + plotZ
|
||||
+ ")");
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -618,9 +612,7 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
||||
}
|
||||
|
||||
public void removePersistentMeta(String key) {
|
||||
if (this.metaMap.containsKey(key)) {
|
||||
this.metaMap.remove(key);
|
||||
}
|
||||
this.metaMap.remove(key);
|
||||
if (Settings.Enabled_Components.PERSISTENT_META) {
|
||||
DBFunc.removePersistentMeta(getUUID(), key);
|
||||
}
|
||||
|
@ -14,12 +14,6 @@ import java.util.*;
|
||||
*/
|
||||
public class PlotSettings {
|
||||
|
||||
/**
|
||||
* Merged plots.
|
||||
*
|
||||
* @deprecated Raw access
|
||||
*/
|
||||
@Deprecated public boolean[] merged = new boolean[] {false, false, false, false};
|
||||
/**
|
||||
* Plot alias.
|
||||
*
|
||||
@ -32,20 +26,24 @@ public class PlotSettings {
|
||||
* @deprecated Raw access
|
||||
*/
|
||||
@Deprecated public List<PlotComment> comments = null;
|
||||
|
||||
/**
|
||||
* The ratings for a plot.
|
||||
*
|
||||
* @deprecated Raw access
|
||||
*/
|
||||
@Deprecated public HashMap<UUID, Integer> ratings;
|
||||
|
||||
/**
|
||||
* Flags.
|
||||
*
|
||||
* @deprecated Raw access
|
||||
*/
|
||||
@Deprecated public HashMap<Flag<?>, Object> flags = new HashMap<>();
|
||||
/**
|
||||
* Merged plots.
|
||||
*
|
||||
* @deprecated Raw access
|
||||
*/
|
||||
@Deprecated private boolean[] merged = new boolean[] {false, false, false, false};
|
||||
/**
|
||||
* Home Position.
|
||||
*
|
||||
|
@ -14,10 +14,8 @@ public abstract class CommentInbox {
|
||||
|
||||
public boolean canRead(Plot plot, PlotPlayer player) {
|
||||
if (Permissions.hasPermission(player, "plots.inbox.read." + toString(), true)) {
|
||||
if (plot.isOwner(player.getUUID()) || Permissions
|
||||
.hasPermission(player, "plots.inbox.read." + toString() + ".other", true)) {
|
||||
return true;
|
||||
}
|
||||
return plot.isOwner(player.getUUID()) || Permissions
|
||||
.hasPermission(player, "plots.inbox.read." + toString() + ".other", true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -33,10 +31,8 @@ public abstract class CommentInbox {
|
||||
|
||||
public boolean canModify(Plot plot, PlotPlayer player) {
|
||||
if (Permissions.hasPermission(player, "plots.inbox.modify." + toString(), true)) {
|
||||
if (plot.isOwner(player.getUUID()) || Permissions
|
||||
.hasPermission(player, "plots.inbox.modify." + toString() + ".other", true)) {
|
||||
return true;
|
||||
}
|
||||
return plot.isOwner(player.getUUID()) || Permissions
|
||||
.hasPermission(player, "plots.inbox.modify." + toString() + ".other", true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ public class InboxOwner extends CommentInbox {
|
||||
plot.getSettings().addComment(comment);
|
||||
}
|
||||
} else {
|
||||
plot.getSettings().setComments(new ArrayList<PlotComment>());
|
||||
plot.getSettings().setComments(new ArrayList<>());
|
||||
}
|
||||
TaskManager.runTask(whenDone);
|
||||
}
|
||||
@ -36,7 +36,7 @@ public class InboxOwner extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override public boolean addComment(Plot plot, PlotComment comment) {
|
||||
if (plot.owner == null) {
|
||||
if (plot.guessOwner() == null) {
|
||||
return false;
|
||||
}
|
||||
plot.getSettings().addComment(comment);
|
||||
|
@ -20,7 +20,7 @@ public class InboxReport extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override public boolean addComment(Plot plot, PlotComment comment) {
|
||||
if (plot.owner == null) {
|
||||
if (plot.guessOwner() == null) {
|
||||
return false;
|
||||
}
|
||||
DBFunc.setComment(plot, comment);
|
||||
|
@ -104,7 +104,7 @@ public class DefaultPlotAreaManager implements PlotAreaManager {
|
||||
}
|
||||
|
||||
@Override public void removePlotArea(PlotArea area) {
|
||||
ArrayList<PlotArea> globalAreas = new ArrayList<PlotArea>(Arrays.asList(plotAreas));
|
||||
ArrayList<PlotArea> globalAreas = new ArrayList<>(Arrays.asList(plotAreas));
|
||||
globalAreas.remove(area);
|
||||
this.plotAreas = globalAreas.toArray(new PlotArea[globalAreas.size()]);
|
||||
if (globalAreas.isEmpty()) {
|
||||
|
@ -113,8 +113,8 @@ public class SinglePlotArea extends GridPlotWorld {
|
||||
return p;
|
||||
}
|
||||
PlotSettings s = p.getSettings();
|
||||
p = new SinglePlot(p.getId(), p.owner, p.getTrusted(), p.getMembers(), p.getDenied(),
|
||||
s.alias, s.getPosition(), null, this, s.merged, p.getTimestamp(), p.temp);
|
||||
p = new SinglePlot(p.getId(), p.guessOwner(), p.getTrusted(), p.getMembers(), p.getDenied(),
|
||||
s.alias, s.getPosition(), null, this, s.getMerged(), p.getTimestamp(), p.temp);
|
||||
p.getSettings().flags = s.flags;
|
||||
return p;
|
||||
}
|
||||
|
@ -35,8 +35,7 @@ public class SinglePlotAreaManager extends DefaultPlotAreaManager {
|
||||
if (chars.length == 1 && chars[0] == '*') {
|
||||
return true;
|
||||
}
|
||||
for (int i = 0; i < chars.length; i++) {
|
||||
char c = chars[i];
|
||||
for (char c : chars) {
|
||||
switch (mode) {
|
||||
case 0:
|
||||
mode = 1;
|
||||
@ -62,7 +61,6 @@ public class SinglePlotAreaManager extends DefaultPlotAreaManager {
|
||||
if ((c <= '/') || (c >= ':')) {
|
||||
return false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -30,12 +30,10 @@ public class SinglePlotManager extends PlotManager {
|
||||
SetupUtils.manager.unload(plot.getWorldName(), false);
|
||||
final File worldFolder =
|
||||
new File(PlotSquared.get().IMP.getWorldContainer(), plot.getWorldName());
|
||||
TaskManager.IMP.taskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.deleteDirectory(worldFolder);
|
||||
if (whenDone != null)
|
||||
whenDone.run();
|
||||
}
|
||||
TaskManager.IMP.taskAsync(() -> {
|
||||
MainUtil.deleteDirectory(worldFolder);
|
||||
if (whenDone != null)
|
||||
whenDone.run();
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
@ -71,41 +71,39 @@ public abstract class ChunkManager {
|
||||
|
||||
public static void largeRegionTask(final String world, final RegionWrapper region,
|
||||
final RunnableVal<ChunkLoc> task, final Runnable whenDone) {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
HashSet<ChunkLoc> chunks = new HashSet<>();
|
||||
Set<ChunkLoc> mcrs = manager.getChunkChunks(world);
|
||||
for (ChunkLoc mcr : mcrs) {
|
||||
int bx = mcr.x << 9;
|
||||
int bz = mcr.z << 9;
|
||||
int tx = bx + 511;
|
||||
int tz = bz + 511;
|
||||
if (bx <= region.maxX && tx >= region.minX && bz <= region.maxZ
|
||||
&& tz >= region.minZ) {
|
||||
for (int x = bx >> 4; x <= (tx >> 4); x++) {
|
||||
int cbx = x << 4;
|
||||
int ctx = cbx + 15;
|
||||
if (cbx <= region.maxX && ctx >= region.minX) {
|
||||
for (int z = bz >> 4; z <= (tz >> 4); z++) {
|
||||
int cbz = z << 4;
|
||||
int ctz = cbz + 15;
|
||||
if (cbz <= region.maxZ && ctz >= region.minZ) {
|
||||
chunks.add(new ChunkLoc(x, z));
|
||||
}
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
HashSet<ChunkLoc> chunks = new HashSet<>();
|
||||
Set<ChunkLoc> mcrs = manager.getChunkChunks(world);
|
||||
for (ChunkLoc mcr : mcrs) {
|
||||
int bx = mcr.x << 9;
|
||||
int bz = mcr.z << 9;
|
||||
int tx = bx + 511;
|
||||
int tz = bz + 511;
|
||||
if (bx <= region.maxX && tx >= region.minX && bz <= region.maxZ
|
||||
&& tz >= region.minZ) {
|
||||
for (int x = bx >> 4; x <= (tx >> 4); x++) {
|
||||
int cbx = x << 4;
|
||||
int ctx = cbx + 15;
|
||||
if (cbx <= region.maxX && ctx >= region.minX) {
|
||||
for (int z = bz >> 4; z <= (tz >> 4); z++) {
|
||||
int cbz = z << 4;
|
||||
int ctz = cbz + 15;
|
||||
if (cbz <= region.maxZ && ctz >= region.minZ) {
|
||||
chunks.add(new ChunkLoc(x, z));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
TaskManager.objectTask(chunks, new RunnableVal<ChunkLoc>() {
|
||||
|
||||
@Override public void run(ChunkLoc value) {
|
||||
if (manager.loadChunk(world, value, false)) {
|
||||
task.run(value);
|
||||
}
|
||||
}
|
||||
}, whenDone);
|
||||
}
|
||||
TaskManager.objectTask(chunks, new RunnableVal<ChunkLoc>() {
|
||||
|
||||
@Override public void run(ChunkLoc value) {
|
||||
if (manager.loadChunk(world, value, false)) {
|
||||
task.run(value);
|
||||
}
|
||||
}
|
||||
}, whenDone);
|
||||
});
|
||||
}
|
||||
|
||||
@ -239,20 +237,18 @@ public abstract class ChunkManager {
|
||||
|
||||
public void deleteRegionFiles(final String world, final Collection<ChunkLoc> chunks,
|
||||
final Runnable whenDone) {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
for (ChunkLoc loc : chunks) {
|
||||
String directory =
|
||||
world + File.separator + "region" + File.separator + "r." + loc.x + "."
|
||||
+ loc.z + ".mca";
|
||||
File file = new File(PlotSquared.get().IMP.getWorldContainer(), directory);
|
||||
PlotSquared.log("&6 - Deleting file: " + file.getName() + " (max 1024 chunks)");
|
||||
if (file.exists()) {
|
||||
file.delete();
|
||||
}
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
for (ChunkLoc loc : chunks) {
|
||||
String directory =
|
||||
world + File.separator + "region" + File.separator + "r." + loc.x + "." + loc.z
|
||||
+ ".mca";
|
||||
File file = new File(PlotSquared.get().IMP.getWorldContainer(), directory);
|
||||
PlotSquared.log("&6 - Deleting file: " + file.getName() + " (max 1024 chunks)");
|
||||
if (file.exists()) {
|
||||
file.delete();
|
||||
}
|
||||
TaskManager.runTask(whenDone);
|
||||
}
|
||||
TaskManager.runTask(whenDone);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -19,11 +19,9 @@ public class CmdConfirm {
|
||||
removePending(player);
|
||||
if (commandStr != null)
|
||||
MainUtil.sendMessage(player, C.REQUIRES_CONFIRM, commandStr);
|
||||
TaskManager.runTaskLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
CmdInstance cmd = new CmdInstance(runnable);
|
||||
player.setMeta("cmdConfirm", cmd);
|
||||
}
|
||||
TaskManager.runTaskLater(() -> {
|
||||
CmdInstance cmd = new CmdInstance(runnable);
|
||||
player.setMeta("cmdConfirm", cmd);
|
||||
}, 1);
|
||||
}
|
||||
}
|
||||
|
@ -20,34 +20,31 @@ public class CommentManager {
|
||||
if (!Settings.Enabled_Components.COMMENT_NOTIFIER || !plot.isOwner(player.getUUID())) {
|
||||
return;
|
||||
}
|
||||
TaskManager.runTaskLaterAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
Collection<CommentInbox> boxes = CommentManager.inboxes.values();
|
||||
final AtomicInteger count = new AtomicInteger(0);
|
||||
final AtomicInteger size = new AtomicInteger(boxes.size());
|
||||
for (final CommentInbox inbox : inboxes.values()) {
|
||||
inbox.getComments(plot, new RunnableVal<List<PlotComment>>() {
|
||||
@Override public void run(List<PlotComment> value) {
|
||||
int total;
|
||||
if (value != null) {
|
||||
int num = 0;
|
||||
for (PlotComment comment : value) {
|
||||
if (comment.timestamp > getTimestamp(player,
|
||||
inbox.toString())) {
|
||||
num++;
|
||||
}
|
||||
TaskManager.runTaskLaterAsync(() -> {
|
||||
Collection<CommentInbox> boxes = CommentManager.inboxes.values();
|
||||
final AtomicInteger count = new AtomicInteger(0);
|
||||
final AtomicInteger size = new AtomicInteger(boxes.size());
|
||||
for (final CommentInbox inbox : inboxes.values()) {
|
||||
inbox.getComments(plot, new RunnableVal<List<PlotComment>>() {
|
||||
@Override public void run(List<PlotComment> value) {
|
||||
int total;
|
||||
if (value != null) {
|
||||
int num = 0;
|
||||
for (PlotComment comment : value) {
|
||||
if (comment.timestamp > getTimestamp(player, inbox.toString())) {
|
||||
num++;
|
||||
}
|
||||
total = count.addAndGet(num);
|
||||
} else {
|
||||
total = count.get();
|
||||
}
|
||||
if ((size.decrementAndGet() == 0) && (total > 0)) {
|
||||
AbstractTitle.sendTitle(player, "",
|
||||
C.INBOX_NOTIFICATION.s().replaceAll("%s", "" + total));
|
||||
}
|
||||
total = count.addAndGet(num);
|
||||
} else {
|
||||
total = count.get();
|
||||
}
|
||||
});
|
||||
}
|
||||
if ((size.decrementAndGet() == 0) && (total > 0)) {
|
||||
AbstractTitle.sendTitle(player, "",
|
||||
C.INBOX_NOTIFICATION.s().replaceAll("%s", "" + total));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
|
@ -76,11 +76,7 @@ public abstract class EventUtil {
|
||||
}
|
||||
final Plot plot = player.getCurrentPlot();
|
||||
if (Settings.Teleport.ON_LOGIN && plot != null) {
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
plot.teleportPlayer(player);
|
||||
}
|
||||
});
|
||||
TaskManager.runTask(() -> plot.teleportPlayer(player));
|
||||
MainUtil.sendMessage(player,
|
||||
C.TELEPORTED_TO_ROAD.f() + " (on-login) " + "(" + plot.getId().x + ";" + plot
|
||||
.getId().y + ")");
|
||||
@ -90,11 +86,7 @@ public abstract class EventUtil {
|
||||
public void doRespawnTask(final PlotPlayer player) {
|
||||
final Plot plot = player.getCurrentPlot();
|
||||
if (Settings.Teleport.ON_DEATH && plot != null) {
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
plot.teleportPlayer(player);
|
||||
}
|
||||
});
|
||||
TaskManager.runTask(() -> plot.teleportPlayer(player));
|
||||
MainUtil.sendMessage(player, C.TELEPORTED_TO_ROAD);
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,6 @@ public class HastebinUtility {
|
||||
List<String> lines = new ArrayList<>();
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
|
||||
String line;
|
||||
int i = 0;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
lines.add(line);
|
||||
}
|
||||
|
@ -124,20 +124,18 @@ public class MainUtil {
|
||||
PrintWriter writer = new PrintWriter(
|
||||
new OutputStreamWriter(output, StandardCharsets.UTF_8), true)) {
|
||||
String CRLF = "\r\n";
|
||||
writer.append("--" + boundary).append(CRLF);
|
||||
writer.append("--").append(boundary).append(CRLF);
|
||||
writer.append("Content-Disposition: form-data; name=\"param\"").append(CRLF);
|
||||
writer.append(
|
||||
"Content-Type: text/plain; charset=" + StandardCharsets.UTF_8.displayName())
|
||||
.append(CRLF);
|
||||
writer.append("Content-Type: text/plain; charset=")
|
||||
.append(StandardCharsets.UTF_8.displayName()).append(CRLF);
|
||||
String param = "value";
|
||||
writer.append(CRLF).append(param).append(CRLF).flush();
|
||||
writer.append("--" + boundary).append(CRLF);
|
||||
writer.append("--").append(boundary).append(CRLF);
|
||||
writer.append(
|
||||
"Content-Disposition: form-data; name=\"schematicFile\"; filename=\""
|
||||
+ filename + '"').append(CRLF);
|
||||
writer
|
||||
.append("Content-Type: " + URLConnection.guessContentTypeFromName(filename))
|
||||
.append(CRLF);
|
||||
"Content-Disposition: form-data; name=\"schematicFile\"; filename=\"")
|
||||
.append(filename).append(String.valueOf('"')).append(CRLF);
|
||||
writer.append("Content-Type: ")
|
||||
.append(URLConnection.guessContentTypeFromName(filename)).append(CRLF);
|
||||
writer.append("Content-Transfer-Encoding: binary").append(CRLF);
|
||||
writer.append(CRLF).flush();
|
||||
writeTask.value = new AbstractDelegateOutputStream(output) {
|
||||
@ -147,7 +145,7 @@ public class MainUtil {
|
||||
writeTask.run();
|
||||
output.flush();
|
||||
writer.append(CRLF).flush();
|
||||
writer.append("--" + boundary + "--").append(CRLF).flush();
|
||||
writer.append("--").append(boundary).append("--").append(CRLF).flush();
|
||||
}
|
||||
try (Reader response = new InputStreamReader(con.getInputStream(),
|
||||
StandardCharsets.UTF_8)) {
|
||||
@ -203,30 +201,30 @@ public class MainUtil {
|
||||
if (time >= 33868800) {
|
||||
int years = (int) (time / 33868800);
|
||||
time -= years * 33868800;
|
||||
toreturn.append(years + "y ");
|
||||
toreturn.append(years).append("y ");
|
||||
}
|
||||
if (time >= 604800) {
|
||||
int weeks = (int) (time / 604800);
|
||||
time -= weeks * 604800;
|
||||
toreturn.append(weeks + "w ");
|
||||
toreturn.append(weeks).append("w ");
|
||||
}
|
||||
if (time >= 86400) {
|
||||
int days = (int) (time / 86400);
|
||||
time -= days * 86400;
|
||||
toreturn.append(days + "d ");
|
||||
toreturn.append(days).append("d ");
|
||||
}
|
||||
if (time >= 3600) {
|
||||
int hours = (int) (time / 3600);
|
||||
time -= hours * 3600;
|
||||
toreturn.append(hours + "h ");
|
||||
toreturn.append(hours).append("h ");
|
||||
}
|
||||
if (time >= 60) {
|
||||
int minutes = (int) (time / 60);
|
||||
time -= minutes * 60;
|
||||
toreturn.append(minutes + "m ");
|
||||
toreturn.append(minutes).append("m ");
|
||||
}
|
||||
if (toreturn.equals("") || time > 0) {
|
||||
toreturn.append((time) + "s ");
|
||||
toreturn.append(time).append("s ");
|
||||
}
|
||||
return toreturn.toString().trim();
|
||||
}
|
||||
@ -410,7 +408,7 @@ public class MainUtil {
|
||||
|
||||
ArrayList<ArrayList<Plot>> plotList = new ArrayList<>(size);
|
||||
for (int i = 0; i < size; i++) {
|
||||
plotList.add(new ArrayList<Plot>());
|
||||
plotList.add(new ArrayList<>());
|
||||
}
|
||||
|
||||
for (Plot plot : PlotSquared.get().getPlots()) {
|
||||
@ -429,7 +427,7 @@ public class MainUtil {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (area != null && plot.getArea().equals(area)) {
|
||||
if (plot.getArea().equals(area)) {
|
||||
count++;
|
||||
}
|
||||
if (alias != null && alias.equals(plot.getAlias())) {
|
||||
@ -621,14 +619,12 @@ public class MainUtil {
|
||||
if (caption.s().isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
String m = C.format(caption, args);
|
||||
if (player == null) {
|
||||
PlotSquared.log(m);
|
||||
} else {
|
||||
player.sendMessage(m);
|
||||
}
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
String m = C.format(caption, args);
|
||||
if (player == null) {
|
||||
PlotSquared.log(m);
|
||||
} else {
|
||||
player.sendMessage(m);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
@ -774,31 +770,28 @@ public class MainUtil {
|
||||
info = info.replace("%desc%", "No description set.");
|
||||
if (info.contains("%rating%")) {
|
||||
final String newInfo = info;
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
int max = 10;
|
||||
if (Settings.Ratings.CATEGORIES != null && !Settings.Ratings.CATEGORIES
|
||||
.isEmpty()) {
|
||||
max = 8;
|
||||
}
|
||||
String info;
|
||||
if (full && Settings.Ratings.CATEGORIES != null
|
||||
&& Settings.Ratings.CATEGORIES.size() > 1) {
|
||||
double[] ratings = MainUtil.getAverageRatings(plot);
|
||||
String rating = "";
|
||||
String prefix = "";
|
||||
for (int i = 0; i < ratings.length; i++) {
|
||||
rating += prefix + Settings.Ratings.CATEGORIES.get(i) + '=' + String
|
||||
.format("%.1f", ratings[i]);
|
||||
prefix = ",";
|
||||
}
|
||||
info = newInfo.replaceAll("%rating%", rating);
|
||||
} else {
|
||||
info = newInfo.replaceAll("%rating%",
|
||||
String.format("%.1f", plot.getAverageRating()) + '/' + max);
|
||||
}
|
||||
whenDone.run(info);
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
int max = 10;
|
||||
if (Settings.Ratings.CATEGORIES != null && !Settings.Ratings.CATEGORIES.isEmpty()) {
|
||||
max = 8;
|
||||
}
|
||||
String info1;
|
||||
if (full && Settings.Ratings.CATEGORIES != null
|
||||
&& Settings.Ratings.CATEGORIES.size() > 1) {
|
||||
double[] ratings = MainUtil.getAverageRatings(plot);
|
||||
StringBuilder rating = new StringBuilder();
|
||||
String prefix = "";
|
||||
for (int i = 0; i < ratings.length; i++) {
|
||||
rating.append(prefix).append(Settings.Ratings.CATEGORIES.get(i)).append('=')
|
||||
.append(String.format("%.1f", ratings[i]));
|
||||
prefix = ",";
|
||||
}
|
||||
info1 = newInfo.replaceAll("%rating%", rating.toString());
|
||||
} else {
|
||||
info1 = newInfo.replaceAll("%rating%",
|
||||
String.format("%.1f", plot.getAverageRating()) + '/' + max);
|
||||
}
|
||||
whenDone.run(info1);
|
||||
});
|
||||
return;
|
||||
}
|
||||
@ -809,10 +802,9 @@ public class MainUtil {
|
||||
if (directory.exists()) {
|
||||
File[] files = directory.listFiles();
|
||||
if (null != files) {
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
File file = files[i];
|
||||
for (File file : files) {
|
||||
if (file.isDirectory()) {
|
||||
deleteDirectory(files[i]);
|
||||
deleteDirectory(file);
|
||||
} else {
|
||||
PlotSquared.debug("Deleting file: " + file + " | " + file.delete());
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ public class Permissions {
|
||||
String[] nodes = permission.split("\\.");
|
||||
StringBuilder n = new StringBuilder();
|
||||
for (int i = 0; i <= (nodes.length - 1); i++) {
|
||||
n.append(nodes[i] + ".");
|
||||
n.append(nodes[i]).append(".");
|
||||
String combined = n + C.PERMISSION_STAR.s();
|
||||
if (!permission.equals(combined)) {
|
||||
if (caller.hasPermission(combined)) {
|
||||
|
@ -87,7 +87,7 @@ public abstract class SchematicHandler {
|
||||
} else {
|
||||
MainUtil.sendMessage(null, "&7 - &a success: " + plot.getId());
|
||||
}
|
||||
TaskManager.runTask(() -> THIS.run());
|
||||
TaskManager.runTask(THIS);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -145,12 +145,7 @@ public class StringMan {
|
||||
|
||||
public static String joinOrdered(Collection<?> collection, String delimiter) {
|
||||
Object[] array = collection.toArray();
|
||||
Arrays.sort(array, new Comparator<Object>() {
|
||||
@Override public int compare(Object a, Object b) {
|
||||
return a.hashCode() - b.hashCode();
|
||||
}
|
||||
|
||||
});
|
||||
Arrays.sort(array, Comparator.comparingInt(Object::hashCode));
|
||||
return join(array, delimiter);
|
||||
}
|
||||
|
||||
@ -245,13 +240,12 @@ public class StringMan {
|
||||
}
|
||||
|
||||
public static boolean isEqual(String a, String b) {
|
||||
return (a == b) || ((a != null) && (b != null) && (a.length() == b.length()) && (
|
||||
a.hashCode() == b.hashCode()) && a.equals(b));
|
||||
return a.equals(b) || b != null && a.length() == b.length() && a.hashCode() == b.hashCode()
|
||||
&& a.equals(b);
|
||||
}
|
||||
|
||||
public static boolean isEqualIgnoreCase(String a, String b) {
|
||||
return (a == b) || ((a != null) && (b != null) && (a.length() == b.length()) && a
|
||||
.equalsIgnoreCase(b));
|
||||
return a.equals(b) || b != null && a.length() == b.length() && a.equalsIgnoreCase(b);
|
||||
}
|
||||
|
||||
public static String repeat(String s, int n) {
|
||||
|
@ -55,7 +55,7 @@ public class UUIDHandler {
|
||||
PlotSquared.get().foreachPlotRaw(new RunnableVal<Plot>() {
|
||||
@Override public void run(Plot plot) {
|
||||
if (plot.hasOwner()) {
|
||||
uuids.add(plot.owner);
|
||||
uuids.add(plot.guessOwner());
|
||||
uuids.addAll(plot.getTrusted());
|
||||
uuids.addAll(plot.getMembers());
|
||||
uuids.addAll(plot.getDenied());
|
||||
|
@ -19,8 +19,7 @@ public abstract class UUIDHandlerImplementation {
|
||||
public final HashSet<UUID> unknown = new HashSet<>();
|
||||
public UUIDWrapper uuidWrapper;
|
||||
private boolean cached = false;
|
||||
private BiMap<StringWrapper, UUID> uuidMap =
|
||||
HashBiMap.create(new HashMap<StringWrapper, UUID>());
|
||||
private BiMap<StringWrapper, UUID> uuidMap = HashBiMap.create(new HashMap<>());
|
||||
// private BiMap<UUID, StringWrapper> nameMap = uuidMap.inverse();
|
||||
|
||||
public UUIDHandlerImplementation(UUIDWrapper wrapper) {
|
||||
@ -106,51 +105,47 @@ public abstract class UUIDHandlerImplementation {
|
||||
* PlotMe conversion
|
||||
*/
|
||||
if (!Settings.UUID.OFFLINE && !this.unknown.isEmpty()) {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
UUID offline = UUID.nameUUIDFromBytes(
|
||||
("OfflinePlayer:" + name.value).getBytes(Charsets.UTF_8));
|
||||
if (!UUIDHandlerImplementation.this.unknown.contains(offline) && !name.value
|
||||
.equals(name.value.toLowerCase())) {
|
||||
offline = UUID.nameUUIDFromBytes(
|
||||
("OfflinePlayer:" + name.value.toLowerCase()).getBytes(Charsets.UTF_8));
|
||||
if (!UUIDHandlerImplementation.this.unknown.contains(offline)) {
|
||||
offline = null;
|
||||
}
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
UUID offline = UUID.nameUUIDFromBytes(
|
||||
("OfflinePlayer:" + name.value).getBytes(Charsets.UTF_8));
|
||||
if (!UUIDHandlerImplementation.this.unknown.contains(offline) && !name.value
|
||||
.equals(name.value.toLowerCase())) {
|
||||
offline = UUID.nameUUIDFromBytes(
|
||||
("OfflinePlayer:" + name.value.toLowerCase()).getBytes(Charsets.UTF_8));
|
||||
if (!UUIDHandlerImplementation.this.unknown.contains(offline)) {
|
||||
offline = null;
|
||||
}
|
||||
if (offline != null && !offline.equals(uuid)) {
|
||||
UUIDHandlerImplementation.this.unknown.remove(offline);
|
||||
Set<Plot> plots = PlotSquared.get().getPlotsAbs(offline);
|
||||
if (!plots.isEmpty()) {
|
||||
for (Plot plot : plots) {
|
||||
plot.owner = uuid;
|
||||
}
|
||||
DBFunc.replaceUUID(offline, uuid);
|
||||
PlotSquared.debug("&cDetected invalid UUID stored for: " + name.value);
|
||||
PlotSquared.debug(
|
||||
"&7 - Did you recently switch to online-mode storage without running `uuidconvert`?");
|
||||
PlotSquared.debug("&6" + PlotSquared.imp().getPluginName()
|
||||
+ " will update incorrect entries when the user logs in, or you can reconstruct your database.");
|
||||
}
|
||||
if (offline != null && !offline.equals(uuid)) {
|
||||
UUIDHandlerImplementation.this.unknown.remove(offline);
|
||||
Set<Plot> plots = PlotSquared.get().getPlotsAbs(offline);
|
||||
if (!plots.isEmpty()) {
|
||||
for (Plot plot : plots) {
|
||||
plot.setOwner(uuid);
|
||||
}
|
||||
DBFunc.replaceUUID(offline, uuid);
|
||||
PlotSquared.debug("&cDetected invalid UUID stored for: " + name.value);
|
||||
PlotSquared.debug(
|
||||
"&7 - Did you recently switch to online-mode storage without running `uuidconvert`?");
|
||||
PlotSquared.debug("&6" + PlotSquared.get().IMP.getPluginName()
|
||||
+ " will update incorrect entries when the user logs in, or you can reconstruct your database.");
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (Settings.UUID.FORCE_LOWERCASE && !this.unknown.isEmpty() && !name.value
|
||||
.equals(name.value.toLowerCase())) {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
UUID offlineUpper = UUID.nameUUIDFromBytes(
|
||||
("OfflinePlayer:" + name.value).getBytes(Charsets.UTF_8));
|
||||
if (UUIDHandlerImplementation.this.unknown.contains(offlineUpper)
|
||||
&& offlineUpper != null && !offlineUpper.equals(uuid)) {
|
||||
UUIDHandlerImplementation.this.unknown.remove(offlineUpper);
|
||||
Set<Plot> plots = PlotSquared.get().getPlotsAbs(offlineUpper);
|
||||
if (!plots.isEmpty()) {
|
||||
for (Plot plot : plots) {
|
||||
plot.owner = uuid;
|
||||
}
|
||||
replace(offlineUpper, uuid, name.value);
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
UUID offlineUpper = UUID.nameUUIDFromBytes(
|
||||
("OfflinePlayer:" + name.value).getBytes(Charsets.UTF_8));
|
||||
if (UUIDHandlerImplementation.this.unknown.contains(offlineUpper) && !offlineUpper
|
||||
.equals(uuid)) {
|
||||
UUIDHandlerImplementation.this.unknown.remove(offlineUpper);
|
||||
Set<Plot> plots = PlotSquared.get().getPlotsAbs(offlineUpper);
|
||||
if (!plots.isEmpty()) {
|
||||
for (Plot plot : plots) {
|
||||
plot.setOwner(uuid);
|
||||
}
|
||||
replace(offlineUpper, uuid, name.value);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -162,7 +157,7 @@ public abstract class UUIDHandlerImplementation {
|
||||
Set<Plot> plots = PlotSquared.get().getPlots(offline);
|
||||
if (!plots.isEmpty()) {
|
||||
for (Plot plot : plots) {
|
||||
plot.owner = uuid;
|
||||
plot.setOwner(uuid);
|
||||
}
|
||||
replace(offline, uuid, name.value);
|
||||
}
|
||||
@ -199,7 +194,7 @@ public abstract class UUIDHandlerImplementation {
|
||||
PlotSquared.debug("&cDetected invalid UUID stored for: " + name);
|
||||
PlotSquared.debug(
|
||||
"&7 - Did you recently switch to online-mode storage without running `uuidconvert`?");
|
||||
PlotSquared.debug("&6" + PlotSquared.imp().getPluginName()
|
||||
PlotSquared.debug("&6" + PlotSquared.get().IMP.getPluginName()
|
||||
+ " will update incorrect entries when the user logs in, or you can reconstruct your database.");
|
||||
}
|
||||
|
||||
|
@ -81,52 +81,50 @@ public class GlobalBlockQueue {
|
||||
return false;
|
||||
}
|
||||
running.set(true);
|
||||
TaskManager.runTaskRepeat(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (inactiveQueues.isEmpty() && activeQueues.isEmpty()) {
|
||||
lastSuccess = System.currentTimeMillis();
|
||||
tasks();
|
||||
return;
|
||||
}
|
||||
SET_TASK.value1 = 50 + Math.min(
|
||||
(50 + GlobalBlockQueue.this.last) - (GlobalBlockQueue.this.last =
|
||||
System.currentTimeMillis()),
|
||||
GlobalBlockQueue.this.secondLast - System.currentTimeMillis());
|
||||
SET_TASK.value2 = getNextQueue();
|
||||
if (SET_TASK.value2 == null) {
|
||||
return;
|
||||
}
|
||||
if (!PlotSquared.get().isMainThread(Thread.currentThread())) {
|
||||
throw new IllegalStateException(
|
||||
"This shouldn't be possible for placement to occur off the main thread");
|
||||
}
|
||||
// Disable the async catcher as it can't discern async vs parallel
|
||||
SET_TASK.value2.startSet(true);
|
||||
try {
|
||||
if (PARALLEL_THREADS <= 1) {
|
||||
SET_TASK.run();
|
||||
} else {
|
||||
ArrayList<Thread> threads = new ArrayList<Thread>();
|
||||
for (int i = 0; i < PARALLEL_THREADS; i++) {
|
||||
threads.add(new Thread(SET_TASK));
|
||||
}
|
||||
for (Thread thread : threads) {
|
||||
thread.start();
|
||||
}
|
||||
for (Thread thread : threads) {
|
||||
try {
|
||||
thread.join();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
TaskManager.runTaskRepeat(() -> {
|
||||
if (inactiveQueues.isEmpty() && activeQueues.isEmpty()) {
|
||||
lastSuccess = System.currentTimeMillis();
|
||||
tasks();
|
||||
return;
|
||||
}
|
||||
SET_TASK.value1 = 50 + Math.min(
|
||||
(50 + GlobalBlockQueue.this.last) - (GlobalBlockQueue.this.last =
|
||||
System.currentTimeMillis()),
|
||||
GlobalBlockQueue.this.secondLast - System.currentTimeMillis());
|
||||
SET_TASK.value2 = getNextQueue();
|
||||
if (SET_TASK.value2 == null) {
|
||||
return;
|
||||
}
|
||||
if (!PlotSquared.get().isMainThread(Thread.currentThread())) {
|
||||
throw new IllegalStateException(
|
||||
"This shouldn't be possible for placement to occur off the main thread");
|
||||
}
|
||||
// Disable the async catcher as it can't discern async vs parallel
|
||||
SET_TASK.value2.startSet(true);
|
||||
try {
|
||||
if (PARALLEL_THREADS <= 1) {
|
||||
SET_TASK.run();
|
||||
} else {
|
||||
ArrayList<Thread> threads = new ArrayList<Thread>();
|
||||
for (int i = 0; i < PARALLEL_THREADS; i++) {
|
||||
threads.add(new Thread(SET_TASK));
|
||||
}
|
||||
for (Thread thread : threads) {
|
||||
thread.start();
|
||||
}
|
||||
for (Thread thread : threads) {
|
||||
try {
|
||||
thread.join();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
// Enable it again (note that we are still on the main thread)
|
||||
SET_TASK.value2.endSet(true);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
// Enable it again (note that we are still on the main thread)
|
||||
SET_TASK.value2.endSet(true);
|
||||
}
|
||||
}, 1);
|
||||
return true;
|
||||
@ -168,7 +166,7 @@ public class GlobalBlockQueue {
|
||||
|
||||
public List<LocalBlockQueue> getAllQueues() {
|
||||
ArrayList<LocalBlockQueue> list =
|
||||
new ArrayList<LocalBlockQueue>(activeQueues.size() + inactiveQueues.size());
|
||||
new ArrayList<>(activeQueues.size() + inactiveQueues.size());
|
||||
list.addAll(inactiveQueues);
|
||||
list.addAll(activeQueues);
|
||||
return list;
|
||||
@ -299,6 +297,6 @@ public class GlobalBlockQueue {
|
||||
}
|
||||
|
||||
public enum QueueStage {
|
||||
INACTIVE, ACTIVE, NONE;
|
||||
INACTIVE, ACTIVE, NONE
|
||||
}
|
||||
}
|
||||
|
@ -77,7 +77,6 @@ public class ScopedLocalBlockQueue extends DelegateLocalBlockQueue {
|
||||
PlotArea area = PlotSquared.get().getPlotArea(getWorld(), null);
|
||||
Location loc = new Location(getWorld(), bx, 0, bz);
|
||||
if (area != null) {
|
||||
PlotManager manager = area.getPlotManager();
|
||||
for (int x = 0; x < 16; x++) {
|
||||
loc.setX(bx + x);
|
||||
for (int z = 0; z < 16; z++) {
|
||||
|
@ -98,28 +98,26 @@ public class ExpireManager {
|
||||
Iterator<Plot> iter = plotsToDelete.iterator();
|
||||
final Plot current = iter.next();
|
||||
if (!isExpired(new ArrayDeque<>(tasks), current).isEmpty()) {
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override public void run() {
|
||||
pp.setMeta("ignoreExpireTask", true);
|
||||
pp.teleport(current.getCenter());
|
||||
pp.deleteMeta("ignoreExpireTask");
|
||||
PlotMessage msg = new PlotMessage().text(
|
||||
num + " " + (num > 1 ? "plots are" : "plot is") + " expired: ")
|
||||
.color("$1").text(current.toString()).color("$2")
|
||||
.suggest("/plot list expired").tooltip("/plot list expired")
|
||||
//.text("\n - ").color("$3").text("Delete all (/plot delete expired)").color("$2").command("/plot delete expired")
|
||||
.text("\n - ").color("$3").text("Delete this (/plot delete)")
|
||||
.color("$2").suggest("/plot delete").tooltip("/plot delete")
|
||||
.text("\n - ").color("$3").text("Remind later (/plot set keep 1d)")
|
||||
.color("$2").suggest("/plot set keep 1d")
|
||||
.tooltip("/plot set keep 1d").text("\n - ").color("$3")
|
||||
.text("Keep this (/plot set keep true)").color("$2")
|
||||
.suggest("/plot set keep true").tooltip("/plot set keep true")
|
||||
.text("\n - ").color("$3").text("Don't show me this").color("$2")
|
||||
.suggest("/plot toggle clear-confirmation")
|
||||
.tooltip("/plot toggle clear-confirmation");
|
||||
msg.send(pp);
|
||||
}
|
||||
TaskManager.runTask(() -> {
|
||||
pp.setMeta("ignoreExpireTask", true);
|
||||
pp.teleport(current.getCenter());
|
||||
pp.deleteMeta("ignoreExpireTask");
|
||||
PlotMessage msg = new PlotMessage()
|
||||
.text(num + " " + (num > 1 ? "plots are" : "plot is") + " expired: ")
|
||||
.color("$1").text(current.toString()).color("$2")
|
||||
.suggest("/plot list expired").tooltip("/plot list expired")
|
||||
//.text("\n - ").color("$3").text("Delete all (/plot delete expired)").color("$2").command("/plot delete expired")
|
||||
.text("\n - ").color("$3").text("Delete this (/plot delete)")
|
||||
.color("$2").suggest("/plot delete").tooltip("/plot delete")
|
||||
.text("\n - ").color("$3").text("Remind later (/plot set keep 1d)")
|
||||
.color("$2").suggest("/plot set keep 1d").tooltip("/plot set keep 1d")
|
||||
.text("\n - ").color("$3").text("Keep this (/plot set keep true)")
|
||||
.color("$2").suggest("/plot set keep true")
|
||||
.tooltip("/plot set keep true").text("\n - ").color("$3")
|
||||
.text("Don't show me this").color("$2")
|
||||
.suggest("/plot toggle clear-confirmation")
|
||||
.tooltip("/plot toggle clear-confirmation");
|
||||
msg.send(pp);
|
||||
});
|
||||
return;
|
||||
} else {
|
||||
@ -220,12 +218,7 @@ public class ExpireManager {
|
||||
|
||||
public ArrayDeque<ExpiryTask> getTasks(PlotArea area) {
|
||||
ArrayDeque<ExpiryTask> queue = new ArrayDeque<>(tasks);
|
||||
Iterator<ExpiryTask> iter = queue.iterator();
|
||||
while (iter.hasNext()) {
|
||||
if (!iter.next().applies(area)) {
|
||||
iter.remove();
|
||||
}
|
||||
}
|
||||
queue.removeIf(expiryTask -> !expiryTask.applies(area));
|
||||
return queue;
|
||||
}
|
||||
|
||||
@ -255,7 +248,7 @@ public class ExpireManager {
|
||||
}
|
||||
this.running = 2;
|
||||
final ConcurrentLinkedDeque<Plot> plots =
|
||||
new ConcurrentLinkedDeque<Plot>(PlotSquared.get().getPlots());
|
||||
new ConcurrentLinkedDeque<>(PlotSquared.get().getPlots());
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
final Runnable task = this;
|
||||
@ -263,7 +256,6 @@ public class ExpireManager {
|
||||
ExpireManager.this.running = 0;
|
||||
return;
|
||||
}
|
||||
long start = System.currentTimeMillis();
|
||||
while (!plots.isEmpty()) {
|
||||
if (ExpireManager.this.running != 2) {
|
||||
ExpireManager.this.running = 0;
|
||||
@ -279,11 +271,8 @@ public class ExpireManager {
|
||||
}
|
||||
for (ExpiryTask expiryTask : expired) {
|
||||
if (!expiryTask.needsAnalysis()) {
|
||||
expiredTask.run(newPlot, new Runnable() {
|
||||
@Override public void run() {
|
||||
TaskManager.IMP.taskLaterAsync(task, 1);
|
||||
}
|
||||
}, expiryTask.requiresConfirmation());
|
||||
expiredTask.run(newPlot, () -> TaskManager.IMP.taskLaterAsync(task, 1),
|
||||
expiryTask.requiresConfirmation());
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -292,26 +281,19 @@ public class ExpireManager {
|
||||
@Override public void run(final PlotAnalysis changed) {
|
||||
passesComplexity(changed, expired, new RunnableVal<Boolean>() {
|
||||
@Override public void run(Boolean confirmation) {
|
||||
expiredTask.run(newPlot, new Runnable() {
|
||||
@Override public void run() {
|
||||
TaskManager.IMP.taskLaterAsync(task, 1);
|
||||
}
|
||||
}, confirmation);
|
||||
}
|
||||
}, new Runnable() {
|
||||
@Override public void run() {
|
||||
FlagManager
|
||||
.addPlotFlag(newPlot, Flags.ANALYSIS, changed.asList());
|
||||
TaskManager.runTaskLaterAsync(task, 20);
|
||||
expiredTask.run(newPlot,
|
||||
() -> TaskManager.IMP.taskLaterAsync(task, 1),
|
||||
confirmation);
|
||||
}
|
||||
}, () -> {
|
||||
FlagManager
|
||||
.addPlotFlag(newPlot, Flags.ANALYSIS, changed.asList());
|
||||
TaskManager.runTaskLaterAsync(task, 20);
|
||||
});
|
||||
}
|
||||
};
|
||||
final Runnable doAnalysis = new Runnable() {
|
||||
@Override public void run() {
|
||||
HybridUtils.manager.analyzePlot(newPlot, handleAnalysis);
|
||||
}
|
||||
};
|
||||
final Runnable doAnalysis =
|
||||
() -> HybridUtils.manager.analyzePlot(newPlot, handleAnalysis);
|
||||
|
||||
PlotAnalysis analysis = newPlot.getComplexity(null);
|
||||
if (analysis != null) {
|
||||
@ -319,11 +301,7 @@ public class ExpireManager {
|
||||
@Override public void run(Boolean value) {
|
||||
doAnalysis.run();
|
||||
}
|
||||
}, new Runnable() {
|
||||
@Override public void run() {
|
||||
TaskManager.IMP.taskLaterAsync(task, 1);
|
||||
}
|
||||
});
|
||||
}, () -> TaskManager.IMP.taskLaterAsync(task, 1));
|
||||
} else {
|
||||
doAnalysis.run();
|
||||
}
|
||||
@ -331,12 +309,10 @@ public class ExpireManager {
|
||||
}
|
||||
if (plots.isEmpty()) {
|
||||
ExpireManager.this.running = 3;
|
||||
TaskManager.runTaskLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (ExpireManager.this.running == 3) {
|
||||
ExpireManager.this.running = 2;
|
||||
runTask(expiredTask);
|
||||
}
|
||||
TaskManager.runTaskLater(() -> {
|
||||
if (ExpireManager.this.running == 3) {
|
||||
ExpireManager.this.running = 2;
|
||||
runTask(expiredTask);
|
||||
}
|
||||
}, 86400000);
|
||||
} else {
|
||||
@ -364,7 +340,7 @@ public class ExpireManager {
|
||||
}
|
||||
|
||||
public HashSet<Plot> getPendingExpired() {
|
||||
return plotsToDelete == null ? new HashSet<Plot>() : plotsToDelete;
|
||||
return plotsToDelete == null ? new HashSet<>() : plotsToDelete;
|
||||
}
|
||||
|
||||
public void deleteWithMessage(Plot plot, Runnable whenDone) {
|
||||
@ -389,12 +365,12 @@ public class ExpireManager {
|
||||
int changes = changed == null ? 0 : changed.changes_sd;
|
||||
int modified = changed == null ? 0 : changed.changes;
|
||||
PlotSquared.debug(
|
||||
"$2[&5Expire&dManager$2] &cDeleted expired plot: " + plot + " User:" + plot.owner
|
||||
"$2[&5Expire&dManager$2] &cDeleted expired plot: " + plot + " User:" + plot.guessOwner()
|
||||
+ " Delta:" + changes + "/" + modified + " Connected: " + StringMan
|
||||
.getString(plots));
|
||||
PlotSquared.debug("$4 - Area: " + plot.getArea());
|
||||
if (plot.hasOwner()) {
|
||||
PlotSquared.debug("$4 - Owner: " + UUIDHandler.getName(plot.owner));
|
||||
PlotSquared.debug("$4 - Owner: " + UUIDHandler.getName(plot.guessOwner()));
|
||||
} else {
|
||||
PlotSquared.debug("$4 - Owner: Unowned");
|
||||
}
|
||||
@ -429,8 +405,8 @@ public class ExpireManager {
|
||||
}
|
||||
|
||||
public long getAccountAge(Plot plot) {
|
||||
if (!plot.hasOwner() || Objects.equals(DBFunc.EVERYONE, plot.owner)
|
||||
|| UUIDHandler.getPlayer(plot.owner) != null || plot.getRunning() > 0) {
|
||||
if (!plot.hasOwner() || Objects.equals(DBFunc.EVERYONE, plot.guessOwner())
|
||||
|| UUIDHandler.getPlayer(plot.guessOwner()) != null || plot.getRunning() > 0) {
|
||||
return Long.MAX_VALUE;
|
||||
}
|
||||
long max = 0;
|
||||
@ -442,8 +418,8 @@ public class ExpireManager {
|
||||
}
|
||||
|
||||
public long getAge(Plot plot) {
|
||||
if (!plot.hasOwner() || Objects.equals(DBFunc.EVERYONE, plot.owner)
|
||||
|| UUIDHandler.getPlayer(plot.owner) != null || plot.getRunning() > 0) {
|
||||
if (!plot.hasOwner() || Objects.equals(DBFunc.EVERYONE, plot.guessOwner())
|
||||
|| UUIDHandler.getPlayer(plot.guessOwner()) != null || plot.getRunning() > 0) {
|
||||
return 0;
|
||||
}
|
||||
Optional<?> keep = plot.getFlag(Flags.KEEP);
|
||||
|
@ -378,19 +378,19 @@ public class PlotAnalysis {
|
||||
}
|
||||
|
||||
public static String log(Object obj) {
|
||||
String result = "";
|
||||
StringBuilder result = new StringBuilder();
|
||||
if (obj.getClass().isArray()) {
|
||||
String prefix = "";
|
||||
|
||||
for (int i = 0; i < Array.getLength(obj); i++) {
|
||||
result += prefix + log(Array.get(obj, i));
|
||||
result.append(prefix).append(log(Array.get(obj, i)));
|
||||
prefix = ",";
|
||||
}
|
||||
return "( " + result + " )";
|
||||
} else if (obj instanceof List<?>) {
|
||||
String prefix = "";
|
||||
for (Object element : (List<?>) obj) {
|
||||
result += prefix + log(element);
|
||||
result.append(prefix).append(log(element));
|
||||
prefix = ",";
|
||||
}
|
||||
return "[ " + result + " ]";
|
||||
|
Reference in New Issue
Block a user