Skip to content

Commit

Permalink
Changed formatting and moved to localDateTime.
Browse files Browse the repository at this point in the history
  • Loading branch information
Spikey84 committed Feb 6, 2022
1 parent 60bff11 commit 4d59621
Show file tree
Hide file tree
Showing 6 changed files with 292 additions and 76 deletions.
20 changes: 16 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,26 @@

<groupId>me.spikey.spikeycooldownapi</groupId>
<artifactId>SpikeyCooldownAPI</artifactId>
<version>1.5</version>
<version>2.0</version>

<properties>
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>16</maven.compiler.source>
<maven.compiler.target>16</maven.compiler.target>
</properties>

<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>16</source>
<target>16</target>
</configuration>
</plugin>
</plugins>
</build>

<repositories>
<repository>
<id>jitpack.io</id>
Expand Down
179 changes: 114 additions & 65 deletions src/main/java/me/spikey/spikeycooldownapi/API.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,20 @@
import java.sql.Connection;
import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalField;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.TimeUnit;

public class API {
private String name;
private String permBase;
private Map<Integer, String> permissions;

private HashMap<UUID, HashMap<Integer, Timestamp>> cooldowns;
private HashMap<UUID, HashMap<Integer, LocalDateTime>> cooldowns;

public API(String name, String permissionBase) {
addPlugin(name);
Expand All @@ -40,7 +44,7 @@ private int getTimeInMin(UUID uuid, int id) {
return PermissionUtils.getNumberedPermissionValueMin("cooldownapi.%s.%s".formatted(permBase, permissions.get(id)), uuid);
}

public void updateCooldown(UUID uuid, int id, Timestamp time) {
public void updateCooldown(UUID uuid, int id, LocalDateTime time) {
cooldowns.putIfAbsent(uuid, Maps.newHashMap());
cooldowns.get(uuid).put(id, time);

Expand All @@ -52,10 +56,10 @@ public void updateCooldown(UUID uuid, int id, Timestamp time) {

public void updateCooldown(UUID uuid, int id) {
cooldowns.putIfAbsent(uuid, Maps.newHashMap());
cooldowns.get(uuid).put(id, Timestamp.from(Instant.now()));
cooldowns.get(uuid).put(id, LocalDateTime.now());

SchedulerUtils.runDatabaseAsync((connection -> {
PluginDAO.updateCooldown(connection, name, uuid, id, Timestamp.from(Instant.now()));
PluginDAO.updateCooldown(connection, name, uuid, id, LocalDateTime.now());
}));

}
Expand All @@ -66,76 +70,121 @@ public void updateCooldown(Player player, int id) {
}

public boolean isOnCooldown(UUID uuid, int id) {
return getRemainingMillis(uuid, id) > 0;
}

public boolean isOnCooldown(Player player, int id) {
UUID uuid = player.getUniqueId();
return isOnCooldown(uuid, id);
}

public String getRemainingFormatted(UUID uuid, int id) {
long millis = getRemainingMillis(uuid, id);

long minutes = (long) Math.floor(millis/60000);
long seconds = (millis/1000) % 60;

if (seconds < 10) return String.format("%s:0%s", minutes, seconds);
return String.format("%s:%s", minutes, seconds);

}

public String getRemainingFormattedLong(UUID uuid, int id) {
long millis = getRemainingMillis(uuid, id);

long minutes = (long) Math.floor(millis/60000);
long seconds = (millis/1000) % 60;

return String.format("%s minutes and %s seconds", minutes, seconds);

}

public String getRemainingFormatted(Player player, int id) {
return getRemainingFormatted(player.getUniqueId(), id);
}

public long getRemainingMinutes(UUID uuid, int id) {
long millis = getRemainingMillis(uuid, id);

long minutes = (long) Math.ceil(millis/60000);

return minutes;
}
cooldowns.putIfAbsent(uuid, Maps.newHashMap());
if (!cooldowns.get(uuid).containsKey(id)) return false;

public long getRemainingMinutes(Player player, int id) {
UUID uuid = player.getUniqueId();
return getRemainingMinutes(uuid, id);
}
LocalDateTime timeOfLastRunning = cooldowns.get(uuid).get(id);
LocalDateTime currentTime = LocalDateTime.now();

public long getRemainingSeconds(UUID uuid, int id) {
long millis = getRemainingMillis(uuid, id);
int cooldownTimeInMinutes = getTimeInMin(uuid, id);

long seconds = (millis/1000);
LocalDateTime timeOfCooldownExpire = timeOfLastRunning.plusMinutes(cooldownTimeInMinutes);

return seconds;
return currentTime.isBefore(timeOfCooldownExpire);
}

public long getRemainingSeconds(Player player, int id) {
public boolean isOnCooldown(Player player, int id) {
UUID uuid = player.getUniqueId();
return getRemainingSeconds(uuid, id);
return isOnCooldown(uuid, id);
}

private long getRemainingMillis(UUID uuid, int id) {
cooldowns.putIfAbsent(uuid, Maps.newHashMap());
if (!cooldowns.get(uuid).containsKey(id)) return -1;

Long timeOfLastRunning = cooldowns.get(uuid).get(id).getTime();
Long currentTime = Timestamp.from(Instant.now()).getTime();

Long differenceMil = currentTime - timeOfLastRunning;

return (int) ((getTimeInMin(uuid, id)*60000) - (differenceMil));
}
public String getRemainingFormattedLong(UUID uuid, int id) {
LocalDateTime timeOfLastRunning = cooldowns.get(uuid).get(id);
LocalDateTime currentTime = LocalDateTime.now();

int cooldownTimeInMinutes = getTimeInMin(uuid, id);

LocalDateTime timeOfCooldownExpire = timeOfLastRunning.plusMinutes(cooldownTimeInMinutes);

long years = ChronoUnit.YEARS.between(currentTime, timeOfCooldownExpire);
long months = ChronoUnit.MONTHS.between(currentTime, timeOfCooldownExpire) % 12;
long days = ChronoUnit.DAYS.between(currentTime, timeOfCooldownExpire) % 30;
long hours = ChronoUnit.HOURS.between(currentTime, timeOfCooldownExpire) % 24;
long minutes = ChronoUnit.MINUTES.between(currentTime, timeOfCooldownExpire) % 60;
long seconds = ChronoUnit.SECONDS.between(currentTime, timeOfCooldownExpire) % 60;

String formatted = "%s%s%s%s%s%s";

String year = "";
if (years != 0) year = years + " Years(s) ";
String month = "";
if (months != 0) month = months + " Months(s) ";
String day = "";
if (days != 0) day = days + " Day(s) ";
String hour = "";
if (hours != 0) hour = hours + " Hour(s) ";
String minute = "";
if (minutes != 0) minute = minutes + " Minute(s) ";
String second = "";
if (seconds != 0) second = seconds + " Seconds(s)";
return formatted.formatted(year, month, day, hour, minute, second);

}

// public String getRemainingFormatted(UUID uuid, int id) {
// long millis = getRemainingMillis(uuid, id);
//
// long minutes = (long) Math.floor(millis/60000);
// long seconds = (millis/1000) % 60;
//
// if (seconds < 10) return String.format("%s:0%s", minutes, seconds);
// return String.format("%s:%s", minutes, seconds);
//
// }
//
// public String getRemainingFormattedLong(UUID uuid, int id) {
// long millis = getRemainingMillis(uuid, id);
//
// long minutes = (long) Math.floor(millis/60000);
// long seconds = (millis/1000) % 60;
//
// return String.format("%s minutes and %s seconds", minutes, seconds);
//
// }
//
// public String getRemainingFormatted(Player player, int id) {
// return getRemainingFormatted(player.getUniqueId(), id);
// }
//
// public long getRemainingMinutes(UUID uuid, int id) {
// long millis = getRemainingMillis(uuid, id);
//
// long minutes = (long) Math.ceil(millis/60000);
//
// return minutes;
// }
//
// public long getRemainingMinutes(Player player, int id) {
// UUID uuid = player.getUniqueId();
// return getRemainingMinutes(uuid, id);
// }
//
// public long getRemainingSeconds(UUID uuid, int id) {
// long millis = getRemainingMillis(uuid, id);
//
// long seconds = (millis/1000);
//
// return seconds;
// }
//
// public long getRemainingSeconds(Player player, int id) {
// UUID uuid = player.getUniqueId();
// return getRemainingSeconds(uuid, id);
// }
//
// private long getRemainingMillis(UUID uuid, int id) {
// cooldowns.putIfAbsent(uuid, Maps.newHashMap());
// if (!cooldowns.get(uuid).containsKey(id)) return -1;
//
// LocalDateTime timeOfLastRunning = cooldowns.get(uuid).get(id);
// LocalDateTime currentTime = LocalDateTime.now();
//
//
// //int differenceMil = currentTime - timeOfLastRunning;
//
// int differenceMil = 1;//////////////////////////////////////////////////////////////////////////////////
// return (int) ((getTimeInMin(uuid, id)*60000) - (differenceMil));
// }



Expand Down
10 changes: 9 additions & 1 deletion src/main/java/me/spikey/spikeycooldownapi/DatabaseManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,19 @@ public static void createPluginTable(Connection connection, String tableName) {
Class.forName("org.sqlite.JDBC");

statement = connection.createStatement();
// String query = """
// CREATE TABLE IF NOT EXISTS %s (\
// id INTEGER, \
// uuid VARCHAR NOT NULL,\
// lastused TIMESTAMP NOT NULL\
// );
// """.formatted(tableName);

String query = """
CREATE TABLE IF NOT EXISTS %s (\
id INTEGER, \
uuid VARCHAR NOT NULL,\
lastused TIMESTAMP NOT NULL\
lastused text NOT NULL\
);
""".formatted(tableName);

Expand Down
Loading

0 comments on commit 4d59621

Please sign in to comment.