diff --git a/README.md b/README.md
index a010757..7c35428 100644
--- a/README.md
+++ b/README.md
@@ -19,6 +19,7 @@ I decided that it was time for a change. I wanted a working, updated economy plu
* SaneEconomyCore - The main economy provider.
* SaneEconomySignShop - A side project written for a specific server. Unsupported.
* SaneEconomyMobKills - Another side project for the same server. Unsupported.
+* SaneEconomyOnlineTime - A replacement for the old plugin TimeIsMoney. Unsupported for now.
## Development
diff --git a/SaneEconomyCore/pom.xml b/SaneEconomyCore/pom.xml
index e964285..7acf059 100644
--- a/SaneEconomyCore/pom.xml
+++ b/SaneEconomyCore/pom.xml
@@ -6,10 +6,10 @@
org.appledash
SaneEconomy
- 0.12.4-SNAPSHOT
+ 0.12.5-SNAPSHOT
SaneEconomyCore
- 0.12.4-SNAPSHOT
+ 0.12.5-SNAPSHOT
diff --git a/SaneEconomyMobKills/pom.xml b/SaneEconomyMobKills/pom.xml
index 3b21f32..ad288f3 100644
--- a/SaneEconomyMobKills/pom.xml
+++ b/SaneEconomyMobKills/pom.xml
@@ -5,7 +5,7 @@
SaneEconomy
org.appledash
- 0.12.4-SNAPSHOT
+ 0.12.5-SNAPSHOT
4.0.0
@@ -16,7 +16,7 @@
org.appledash
SaneEconomyCore
- 0.12.4-SNAPSHOT
+ 0.12.5-SNAPSHOT
diff --git a/SaneEconomyOnlineTime/pom.xml b/SaneEconomyOnlineTime/pom.xml
new file mode 100644
index 0000000..532ee63
--- /dev/null
+++ b/SaneEconomyOnlineTime/pom.xml
@@ -0,0 +1,77 @@
+
+
+
+ SaneEconomy
+ org.appledash
+ 0.12.5-SNAPSHOT
+
+ 4.0.0
+
+ SaneEconomyOnlineTime
+ 0.1.0-SNAPSHOT
+
+
+
+
+ org.appledash
+ SaneEconomyCore
+ 0.12.5-SNAPSHOT
+
+
+
+
+ ${project.artifactId}-${project.version}
+
+
+ src/main/resources
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.3
+
+
+ 1.8
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.0.0
+
+
+ package
+
+ shade
+
+
+
+
+ org.appledash:sanelib
+
+
+
+
+ org.appledash.sanelib
+ org.appledash.saneeconomysignshop.shaded.sanelib
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.4
+
+ ../out/
+
+
+
+
+
\ No newline at end of file
diff --git a/SaneEconomyOnlineTime/src/main/java/org/appledash/saneeconomy/onlinetime/Payout.java b/SaneEconomyOnlineTime/src/main/java/org/appledash/saneeconomy/onlinetime/Payout.java
new file mode 100644
index 0000000..c8b52c3
--- /dev/null
+++ b/SaneEconomyOnlineTime/src/main/java/org/appledash/saneeconomy/onlinetime/Payout.java
@@ -0,0 +1,46 @@
+package org.appledash.saneeconomy.onlinetime;
+
+import java.util.Map;
+
+/**
+ * Created by appledash on 7/13/17.
+ * Blackjack is best pony.
+ */
+public class Payout {
+ private final int secondsInterval;
+ private final double amount;
+ private final String message;
+ private String permission;
+ private long reportInterval;
+
+ public Payout(int secondsInterval, double amount, String message, long reportInterval) {
+ this.secondsInterval = secondsInterval;
+ this.amount = amount;
+ this.message = message;
+ this.reportInterval = reportInterval;
+ }
+
+ public int getSecondsInterval() {
+ return secondsInterval;
+ }
+
+ public double getAmount() {
+ return amount;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public static Payout fromConfigMap(Map, ?> values) {
+ return new Payout(Integer.valueOf(String.valueOf(values.get("seconds"))), Double.valueOf(String.valueOf(values.get("amount"))), String.valueOf(values.get("message")), Long.valueOf(String.valueOf(values.get("report_interval"))));
+ }
+
+ public String getPermission() {
+ return permission;
+ }
+
+ public long getReportInterval() {
+ return reportInterval;
+ }
+}
diff --git a/SaneEconomyOnlineTime/src/main/java/org/appledash/saneeconomy/onlinetime/SaneEconomyOnlineTime.java b/SaneEconomyOnlineTime/src/main/java/org/appledash/saneeconomy/onlinetime/SaneEconomyOnlineTime.java
new file mode 100644
index 0000000..23d0327
--- /dev/null
+++ b/SaneEconomyOnlineTime/src/main/java/org/appledash/saneeconomy/onlinetime/SaneEconomyOnlineTime.java
@@ -0,0 +1,80 @@
+package org.appledash.saneeconomy.onlinetime;
+
+import org.appledash.saneeconomy.SaneEconomy;
+import org.appledash.saneeconomy.economy.economable.Economable;
+import org.appledash.saneeconomy.economy.transaction.Transaction;
+import org.appledash.saneeconomy.economy.transaction.TransactionReason;
+import org.appledash.sanelib.SanePlugin;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerQuitEvent;
+
+import java.util.*;
+
+/**
+ * Created by appledash on 7/13/17.
+ * Blackjack is best pony.
+ */
+public class SaneEconomyOnlineTime extends SanePlugin implements Listener {
+ private Map onlineSeconds = new HashMap<>();
+ private Map reportingAmounts = new HashMap<>();
+ private List payouts = new ArrayList<>();
+ private SaneEconomy saneEconomy;
+
+ @Override
+ public void onEnable() {
+ super.onEnable();
+ this.saneEconomy = (SaneEconomy) this.getServer().getPluginManager().getPlugin("SaneEconomy");
+ this.saveDefaultConfig();
+
+ this.getConfig().getMapList("payouts").forEach(map -> {
+ this.payouts.add(Payout.fromConfigMap(map));
+ });
+
+ this.getServer().getScheduler().scheduleSyncRepeatingTask(this, () -> {
+ for (Player player : this.getServer().getOnlinePlayers()) {
+ long onlineSeconds = this.onlineSeconds.getOrDefault(player.getUniqueId(), 0L);
+
+ onlineSeconds++;
+
+ this.onlineSeconds.put(player.getUniqueId(), onlineSeconds);
+
+ for (Payout payout : payouts) {
+ if (payout.getPermission() != null && !player.hasPermission(payout.getPermission())) {
+ continue;
+ }
+
+ if ((onlineSeconds % payout.getSecondsInterval()) == 0) {
+ if (this.reportingAmounts.containsKey(player.getUniqueId())) {
+ this.reportingAmounts.put(player.getUniqueId(), this.reportingAmounts.get(player.getUniqueId()) + payout.getAmount());
+ } else {
+ this.reportingAmounts.put(player.getUniqueId(), payout.getAmount());
+ }
+
+ this.saneEconomy.getEconomyManager().transact(new Transaction(Economable.PLUGIN, Economable.wrap(player), payout.getAmount(), TransactionReason.PLUGIN_GIVE));
+ }
+
+ if ((onlineSeconds % payout.getReportInterval()) == 0) {
+ this.getMessenger().sendMessage(player, payout.getMessage(), this.saneEconomy.getEconomyManager().getCurrency().formatAmount(this.reportingAmounts.getOrDefault(player.getUniqueId(), 0D)), payout.getReportInterval());
+ this.reportingAmounts.put(player.getUniqueId(), 0D);
+ }
+ }
+
+ }
+ },0, 20);
+
+ this.getServer().getPluginManager().registerEvents(this, this);
+ }
+
+ @EventHandler
+ public void onPlayerQuit(PlayerQuitEvent evt) {
+ if (this.onlineSeconds.containsKey(evt.getPlayer().getUniqueId())) {
+ this.onlineSeconds.remove(evt.getPlayer().getUniqueId());
+ }
+
+ if (this.reportingAmounts.containsKey(evt.getPlayer().getUniqueId())) {
+ this.reportingAmounts.remove(evt.getPlayer().getUniqueId());
+ }
+ }
+}
diff --git a/SaneEconomyOnlineTime/src/main/resources/config.yml b/SaneEconomyOnlineTime/src/main/resources/config.yml
new file mode 100644
index 0000000..d79e5a1
--- /dev/null
+++ b/SaneEconomyOnlineTime/src/main/resources/config.yml
@@ -0,0 +1,9 @@
+chat:
+ prefix: '&b[&OnlineTime&b]&r '
+ silent: false
+
+payouts:
+ - seconds: 10
+ amount: 1000
+ message: 'You have been paid {1} in the past {2} seconds of being online!'
+ report_interval: 30
diff --git a/SaneEconomyOnlineTime/src/main/resources/plugin.yml b/SaneEconomyOnlineTime/src/main/resources/plugin.yml
new file mode 100644
index 0000000..3712c60
--- /dev/null
+++ b/SaneEconomyOnlineTime/src/main/resources/plugin.yml
@@ -0,0 +1,6 @@
+name: SaneEconomyOnlineTime
+main: org.appledash.saneeconomy.onlinetime.SaneEconomyOnlineTime
+description: Pays players for being online!
+author: AppleDash
+version: 0.1.0
+depend: [SaneEconomy]
\ No newline at end of file
diff --git a/SaneEconomySignShop/pom.xml b/SaneEconomySignShop/pom.xml
index ed2ec2e..bd7cbd4 100644
--- a/SaneEconomySignShop/pom.xml
+++ b/SaneEconomySignShop/pom.xml
@@ -5,7 +5,7 @@
SaneEconomy
org.appledash
- 0.12.4-SNAPSHOT
+ 0.12.5-SNAPSHOT
4.0.0
@@ -16,7 +16,7 @@
org.appledash
SaneEconomyCore
- 0.12.4-SNAPSHOT
+ 0.12.5-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index f2a663d..cb537ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,13 +6,14 @@
org.appledash
SaneEconomy
- 0.12.4-SNAPSHOT
+ 0.12.5-SNAPSHOT
pom
SaneEconomyCore
SaneEconomySignShop
SaneEconomyMobKills
+ SaneEconomyOnlineTime