diff --git a/SaneEconomyCore/pom.xml b/SaneEconomyCore/pom.xml
index b09397b..7c367a9 100644
--- a/SaneEconomyCore/pom.xml
+++ b/SaneEconomyCore/pom.xml
@@ -9,7 +9,7 @@
0
SaneEconomyCore
- 0.14.0-SNAPSHOT
+ 0.15.0-SNAPSHOT
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java
index b6ee431..1eb6367 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java
@@ -1,6 +1,7 @@
package org.appledash.saneeconomy.economy;
import org.appledash.saneeconomy.ISaneEconomy;
+import org.appledash.saneeconomy.SaneEconomy;
import org.appledash.saneeconomy.economy.backend.EconomyStorageBackend;
import org.appledash.saneeconomy.economy.economable.Economable;
import org.appledash.saneeconomy.economy.transaction.Transaction;
@@ -11,9 +12,12 @@
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
+import java.awt.*;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
/**
* Created by AppleDash on 6/13/2016.
@@ -138,10 +142,25 @@ public TransactionResult transact(Transaction transaction) {
if (Bukkit.getServer().getPluginManager() != null) { // Bukkit.getServer().getPluginManager() == null from our JUnit tests.
SaneEconomyTransactionEvent evt = new SaneEconomyTransactionEvent(transaction);
+
+ Future future = Bukkit.getServer().getScheduler().callSyncMethod(SaneEconomy.getInstance(), () -> {
+ Bukkit.getServer().getPluginManager().callEvent(evt);
+ return evt;
+ });
+
+ try {
+ if (future.get().isCancelled()) {
+ return new TransactionResult(transaction, TransactionResult.Status.CANCELLED_BY_PLUGIN);
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ throw new RuntimeException(e);
+ }
+
+ /*
Bukkit.getServer().getPluginManager().callEvent(evt);
if (evt.isCancelled()) {
return new TransactionResult(transaction, TransactionResult.Status.CANCELLED_BY_PLUGIN);
- }
+ }*/
}
if (transaction.isSenderAffected()) { // Sender should have balance taken from them