Skip to content

Commit 00ad654

Browse files
committed
[0.3] Fix StackOverflowError exception.
Use the Bukkit scheduler API.
1 parent 311bfc7 commit 00ad654

File tree

4 files changed

+19
-32
lines changed

4 files changed

+19
-32
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<name>PlayTimeLimiter</name>
1010
<description>PlayTimeLimiter is a Bukkit plugin to allow server owners to limit the amount of time their players spend on a server.</description>
1111
<url>https://github.com/UnoModding/Bukkit-PlayTimeLimiter</url>
12-
<version>0.3-dev</version>
12+
<version>0.3</version>
1313
<inceptionYear>2014</inceptionYear>
1414
<packaging>jar</packaging>
1515

src/main/java/unomodding/bukkit/playtimelimiter/PlayTimeLimiter.java

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Copyright 2014 by UnoModding, RyanTheAllmighty and Contributors
2+
* Copyright 2014-2015 by UnoModding, RyanTheAllmighty and Contributors
33
*
44
* This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
55
* To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/.
@@ -14,7 +14,6 @@
1414
import java.io.IOException;
1515
import java.util.HashMap;
1616
import java.util.Map;
17-
import java.util.Timer;
1817
import java.util.UUID;
1918

2019
import org.bukkit.ChatColor;
@@ -44,8 +43,6 @@ public class PlayTimeLimiter extends JavaPlugin {
4443
private Map<String, Boolean> seenWarningMessages = new HashMap<String, Boolean>();
4544

4645
private boolean shutdownHookAdded = false;
47-
private Timer savePlayTimeTimer = null;
48-
private Timer checkPlayTimeTimer = null;
4946
private boolean started = false;
5047
private final Gson GSON = new Gson();
5148

@@ -94,14 +91,14 @@ public void onEnable() {
9491
getConfig().set("timeTravels", true);
9592
saveConfig();
9693
}
97-
if (!getConfig().isSet("timeCap")) {
94+
/*if (!getConfig().isSet("timeCap")) {
9895
getConfig().set("timeCap", true);
9996
saveConfig();
10097
}
10198
if (!getConfig().isSet("timeCapValue")) {
10299
getConfig().set("timeCapValue", 18000);
103100
saveConfig();
104-
}
101+
}*/
105102

106103
getLogger().info(
107104
String.format("Server started at %s which was %s seconds ago!",
@@ -118,18 +115,13 @@ public void onEnable() {
118115
// Load the playtime from file
119116
this.loadPlayTime();
120117

121-
if (savePlayTimeTimer == null) {
122-
this.savePlayTimeTimer = new Timer();
123-
this.savePlayTimeTimer.scheduleAtFixedRate(new PlayTimeSaverTask(
124-
this), 30000,
125-
getConfig().getInt("secondsBetweenPlayTimeSaving") * 1000);
126-
}
127-
if (checkPlayTimeTimer == null) {
128-
this.checkPlayTimeTimer = new Timer();
129-
this.checkPlayTimeTimer.scheduleAtFixedRate(
130-
new PlayTimeCheckerTask(this), 30000,
131-
getConfig().getInt("secondsBetweenPlayTimeChecks") * 1000);
132-
}
118+
this.getServer().getScheduler().scheduleSyncRepeatingTask(this,
119+
new PlayTimeSaverTask(this), 30000,
120+
getConfig().getInt("secondsBetweenPlayTimeSaving") * 1000);
121+
this.getServer().getScheduler().scheduleSyncRepeatingTask(this,
122+
new PlayTimeCheckerTask(this), 30000,
123+
getConfig().getInt("secondsBetweenPlayTimeChecks") * 1000);
124+
133125

134126
try {
135127
Metrics metrics = new Metrics(this);
@@ -232,6 +224,10 @@ public void setPlayerLoggedIn(UUID uuid) {
232224
(int) (System.currentTimeMillis() / 1000));
233225
}
234226

227+
public void setPlayerLoggedOut(UUID uuid) {
228+
setPlayerLoggedOut(uuid.toString());
229+
}
230+
235231
private void setPlayerLoggedOut(String uuid) {
236232
if (this.timeLoggedIn.containsKey(uuid)) {
237233
int timePlayed = (int) ((System.currentTimeMillis() / 1000) - this.timeLoggedIn
@@ -260,10 +256,6 @@ private void setPlayerLoggedOut(String uuid) {
260256
}
261257
}
262258

263-
public void setPlayerLoggedOut(UUID uuid) {
264-
setPlayerLoggedOut(uuid);
265-
}
266-
267259
public boolean hasPlayerSeenMessage(UUID uuid, int time) {
268260
if (this.seenWarningMessages.containsKey(uuid + ":" + time)) {
269261
return this.seenWarningMessages.get(uuid + ":" + time);

src/main/java/unomodding/bukkit/playtimelimiter/threads/PlayTimeCheckerTask.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
/**
2-
* Copyright 2013-2014 by UnoModding, ATLauncher and Contributors
2+
* Copyright 2013-2015 by UnoModding, ATLauncher and Contributors
33
*
44
* This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
55
* To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/.
66
*/
77
package unomodding.bukkit.playtimelimiter.threads;
88

99
import java.io.File;
10-
import java.util.TimerTask;
1110

1211
import org.bukkit.ChatColor;
1312
import org.bukkit.entity.Player;
@@ -16,14 +15,13 @@
1615
import unomodding.bukkit.playtimelimiter.utils.FileUtils;
1716
import unomodding.bukkit.playtimelimiter.utils.Timestamper;
1817

19-
public class PlayTimeCheckerTask extends TimerTask {
18+
public class PlayTimeCheckerTask implements Runnable {
2019
private final PlayTimeLimiter plugin;
2120

2221
public PlayTimeCheckerTask(PlayTimeLimiter instance) {
2322
this.plugin = instance;
2423
}
2524

26-
@Override
2725
public void run() {
2826
for (Player player : this.plugin.getServer().getOnlinePlayers()) {
2927
int timeLeft = this.plugin.getTimeAllowedInSeconds(player

src/main/java/unomodding/bukkit/playtimelimiter/threads/PlayTimeSaverTask.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
/**
2-
* Copyright 2013-2014 by ATLauncher and Contributors
2+
* Copyright 2013-2015 by ATLauncher and Contributors
33
*
44
* This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
55
* To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/.
66
*/
77
package unomodding.bukkit.playtimelimiter.threads;
88

9-
import java.util.TimerTask;
10-
119
import unomodding.bukkit.playtimelimiter.PlayTimeLimiter;
1210

13-
public class PlayTimeSaverTask extends TimerTask {
11+
public class PlayTimeSaverTask implements Runnable {
1412
private final PlayTimeLimiter plugin;
1513

1614
public PlayTimeSaverTask(PlayTimeLimiter instance) {
1715
this.plugin = instance;
1816
}
1917

20-
@Override
2118
public void run() {
2219
this.plugin.savePlayTime(); // Save playtime every 10 minutes
2320
}

0 commit comments

Comments
 (0)