Skip to content
This repository has been archived by the owner on Jan 4, 2021. It is now read-only.

Commit

Permalink
Add area TP purging
Browse files Browse the repository at this point in the history
  • Loading branch information
vxnick committed Nov 11, 2013
1 parent 7ee882e commit 64b31bc
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 6 deletions.
73 changes: 68 additions & 5 deletions src/com/vxnick/areatp/AreaTP.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.Map.Entry;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.logging.Level;

import net.milkbowl.vault.permission.Permission;

Expand All @@ -27,6 +28,43 @@ public void onEnable() {
perms = rsp.getProvider();

saveDefaultConfig();

// Purge old area TPs
getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
int purge = getConfig().getInt("purge");

if (purge > 0) {
ConfigurationSection areas = getConfig().getConfigurationSection("areas");

if (areas != null) {
List<String> areaList = new ArrayList<String>(areas.getKeys(false));

for (String area : areaList) {
long lastVisit = getConfig().getLong(String.format("areas.%s.last_visit", area));

if (lastVisit > 0 && (getUnixTime() - lastVisit >= (purge * 86400))) {
String owner = getConfig().getString(String.format("areas.%s.owner", area));

getConfig().set(String.format("areas.%s", area), null);

List<String> playerAreas = getConfig().getStringList(String.format("players.%s.areas", owner));

if (playerAreas.contains(area)) {
playerAreas.remove(area);
getConfig().set(String.format("players.%s.areas", owner), playerAreas);

getServer().getLogger().log(Level.INFO, String.format("Purged '%s' (owner: %s; last visit: %s ago)",
area, owner, formatDuration(getUnixTime() - lastVisit)));
}

saveConfig();
}
}
}
}
}
}, 30 * 20L);
}

@Override
Expand All @@ -47,6 +85,10 @@ private void teleportPlayer(String playerName, String areaName) {
return;
}

// Set visit timestamp
getConfig().set(String.format("areas.%s.last_visit", areaName), getUnixTime());
saveConfig();

String areaOwner = getConfig().getString(String.format("areas.%s.owner", areaName));
String areaWorld = getConfig().getString(String.format("areas.%s.world", areaName));
double areaX = getConfig().getDouble(String.format("areas.%s.x", areaName));
Expand Down Expand Up @@ -82,6 +124,22 @@ public void paginate(CommandSender sender, SortedMap<Integer, String> map, int p
}
}

private long getUnixTime() {
return (System.currentTimeMillis() / 1000L);
}

private String formatDuration(long seconds) {
if (seconds < 60) {
return String.format("%d second%s", seconds, (seconds == 1 ? "" : "s"));
} else if (seconds < 3600) {
return String.format("%d minute%s", (seconds / 60), ((seconds / 60) == 1 ? "" : "s"));
} else if (seconds < 86400) {
return String.format("%d hour%s", (seconds / 3600), ((seconds / 3600) == 1 ? "" : "s"));
} else {
return String.format("%d day%s", (seconds / 86400), ((seconds / 86400) == 1 ? "" : "s"));
}
}

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("atp")) {
if (!perms.has(sender, "areatp.use")) {
Expand Down Expand Up @@ -111,13 +169,18 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
sender.sendMessage(ChatColor.YELLOW + String.format("%d/%s area teleports", usedAreas, totalAreas));

if (usedAreas > 0) {
StringBuilder areaList = new StringBuilder();

for (String areaName : playerAreas) {
areaList.append(areaName + ", ");
long lastVisit = getConfig().getLong(String.format("areas.%s.last_visit", areaName));
String lastVisitFormatted;

if (lastVisit == 0) {
lastVisitFormatted = "never";
} else {
lastVisitFormatted = formatDuration(getUnixTime() - lastVisit) + " ago";
}

sender.sendMessage(areaName + " (last visited: " + lastVisitFormatted + ")");
}

sender.sendMessage(areaList.toString().replaceAll(", $", ""));
} else {
sender.sendMessage(ChatColor.YELLOW + "No area teleports belong to you");
}
Expand Down
1 change: 1 addition & 0 deletions src/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
page_results: 10
tp_delay: 0
purge: 30
groups:
Settler:
limit: 2
Expand Down
2 changes: 1 addition & 1 deletion src/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: AreaTP
main: com.vxnick.areatp.AreaTP
version: 0.3.0
version: 0.4.0
description: Create area teleports.
author: vxnick
website: http://github.com/vxnick/areatp
Expand Down

0 comments on commit 64b31bc

Please sign in to comment.