Skip to content

Commit

Permalink
Support for auto-disable + bugfixes
Browse files Browse the repository at this point in the history
- Add support for targets auto-disable
- Fix ConcurrentModificationException
- Fix cache duration for check update
  • Loading branch information
arboriginal committed Feb 13, 2019
1 parent 1fd37d8 commit 9af5e58
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 18 deletions.
36 changes: 24 additions & 12 deletions src/me/arboriginal/SimpleCompass/managers/TargetManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,25 +94,37 @@ public void disableTarget(Player player, String type, String name) {
}

public HashMap<String, ArrayList<double[]>> getTargetsCoords(Player player) {
HashMap<String, ArrayList<double[]>> list = new HashMap<String, ArrayList<double[]>>();
UUID uid = player.getUniqueId();
HashMap<String, ArrayList<double[]>> list = new HashMap<String, ArrayList<double[]>>();
HashMap<AbstractTracker, ArrayList<String>> stop = new HashMap<AbstractTracker, ArrayList<String>>();
UUID uid = player.getUniqueId();

for (String trackerID : sc.trackers.keySet()) {
if (activeTargets.get(trackerID).containsKey(uid)) {
AbstractTracker tracker = sc.trackers.get(trackerID);
if (!activeTargets.get(trackerID).containsKey(uid)) continue;
AbstractTracker tracker = sc.trackers.get(trackerID);
if (tracker == null) continue;

if (tracker == null) continue;
ArrayList<double[]> sublist = new ArrayList<double[]>();
ArrayList<String> closest = new ArrayList<String>();

ArrayList<double[]> sublist = new ArrayList<double[]>();
for (String name : activeTargets.get(trackerID).get(uid)) {
double[] coords = tracker.get(player, name);

for (String name : activeTargets.get(trackerID).get(uid)) {
double[] coords = tracker.get(player, name);
if (coords == null || tracker.playerIsClose(player, coords))
closest.add(name);
else
sublist.add(coords);
}

if (coords != null) sublist.add(coords);
}
if (!sublist.isEmpty()) list.put(trackerID, sublist);
if (!closest.isEmpty()) stop.put(tracker, closest);
}

if (!sublist.isEmpty()) list.put(trackerID, sublist);
}
if (!stop.isEmpty()) {
stop.forEach((tracker, stopped) -> {
stopped.forEach(name -> {
tracker.disable(player, name);
});
});
}

return list;
Expand Down
7 changes: 7 additions & 0 deletions src/me/arboriginal/SimpleCompass/plugin/AbstractTracker.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.MemorySection;
import org.bukkit.configuration.file.FileConfiguration;
Expand Down Expand Up @@ -335,6 +336,12 @@ public boolean set(Player player, String name, double[] coords) {
return false;
}

public boolean playerIsClose(Player player, double[] coords) {
int dist = settings.getInt("settings.auto_disabled", 0);
return (dist > 0 && player.getLocation().distance(
new Location(player.getWorld(), coords[0], player.getLocation().getY(), coords[1])) < dist);
}

// ----------------------------------------------------------------------------------------------
// Command methods
// ----------------------------------------------------------------------------------------------
Expand Down
11 changes: 7 additions & 4 deletions src/me/arboriginal/SimpleCompass/plugin/SimpleCompass.java
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,13 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
if (command.getName().toLowerCase().equals("scompass-reload")) {
reloadConfig();

for (String tracker : trackers.keySet()) {
if (!trackers.get(tracker).init()) {
trackers.remove(tracker);
sendMessage(sender, "tracker_disabled", ImmutableMap.of("tracker", tracker));
Iterator<String> it = trackers.keySet().iterator();
while (it.hasNext()) {
String trackerID = it.next();

if (!trackers.get(trackerID).init()) {
it.remove();
sendMessage(sender, "tracker_disabled", ImmutableMap.of("tracker", trackerID));
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/me/arboriginal/SimpleCompass/utils/CacheUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public Object versionGet(String key) {
}

public void versionSet(String key, Object value, int duration) {
vcc.set("version." + key + ".expire", now() + duration * 600000);
vcc.set("version." + key + ".expire", now() + duration * 60000);
vcc.set("version." + key + ".value", value);

try {
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: SimpleCompass
description: Simple compass to help player who don't have sense of direction.
version: 0.9.4
version: 0.9.5

author: arboriginal
website: https://www.spigotmc.org/resources/simplecompass.63140/
Expand Down

0 comments on commit 9af5e58

Please sign in to comment.