diff --git a/currency-plugin/build.gradle b/currency-plugin/build.gradle index d0ed7a3..3fe6bf0 100644 --- a/currency-plugin/build.gradle +++ b/currency-plugin/build.gradle @@ -5,7 +5,7 @@ plugins { } group 'cn.hamster3' -version '2.1.2' +version '2.2.0' repositories { maven { @@ -53,7 +53,7 @@ publishing { artifactId = "HamsterCurrency" artifact jar artifact sourcesJar - artifact javadocJar + //artifact javadocJar } } diff --git a/currency-plugin/src/main/java/cn/hamster3/currency/HamsterCurrency.java b/currency-plugin/src/main/java/cn/hamster3/currency/HamsterCurrency.java index e345c59..72f1102 100644 --- a/currency-plugin/src/main/java/cn/hamster3/currency/HamsterCurrency.java +++ b/currency-plugin/src/main/java/cn/hamster3/currency/HamsterCurrency.java @@ -27,17 +27,23 @@ import org.bukkit.plugin.java.JavaPlugin; import java.sql.SQLException; public final class HamsterCurrency extends JavaPlugin { + private static HamsterCurrency instance; private static LogUtils logUtils; private IDataManager dataManager; private CurrencyListener listener; private boolean loaded; + public static HamsterCurrency getInstance() { + return instance; + } + public static LogUtils getLogUtils() { return logUtils; } @Override public void onLoad() { + instance = this; logUtils = new LogUtils(this); FileManager.reload(this); logUtils.infoDividingLine(); diff --git a/currency-plugin/src/main/java/cn/hamster3/currency/api/CurrencyAPI.java b/currency-plugin/src/main/java/cn/hamster3/currency/api/CurrencyAPI.java index bc6c3b1..4165001 100644 --- a/currency-plugin/src/main/java/cn/hamster3/currency/api/CurrencyAPI.java +++ b/currency-plugin/src/main/java/cn/hamster3/currency/api/CurrencyAPI.java @@ -1,9 +1,11 @@ package cn.hamster3.currency.api; +import cn.hamster3.currency.HamsterCurrency; import cn.hamster3.currency.core.IDataManager; import cn.hamster3.currency.data.CurrencyLog; import cn.hamster3.currency.data.CurrencyType; import cn.hamster3.currency.data.PlayerData; +import cn.hamster3.currency.event.CurrencyChangeEvent; import org.black_ixx.playerpoints.PlayerPoints; import org.bukkit.Bukkit; @@ -41,6 +43,8 @@ public abstract class CurrencyAPI { if (data == null) { return; } + CurrencyChangeEvent event = new CurrencyChangeEvent(uuid, currencyID, data.getPlayerCurrency(currencyID), amount); + Bukkit.getScheduler().runTaskAsynchronously(HamsterCurrency.getInstance(), () -> Bukkit.getPluginManager().callEvent(event)); data.setPlayerCurrency(currencyID, amount); dataManager.savePlayerData(data); dataManager.insertLog(new CurrencyLog(uuid, data.getPlayerName(), currencyID, "set", amount, amount)); @@ -56,6 +60,8 @@ public abstract class CurrencyAPI { return; } double balance = data.getPlayerCurrency(currencyID) + amount; + CurrencyChangeEvent event = new CurrencyChangeEvent(uuid, currencyID, data.getPlayerCurrency(currencyID), balance); + Bukkit.getScheduler().runTaskAsynchronously(HamsterCurrency.getInstance(), () -> Bukkit.getPluginManager().callEvent(event)); data.setPlayerCurrency(currencyID, balance); dataManager.savePlayerData(data); dataManager.insertLog(new CurrencyLog(uuid, data.getPlayerName(), currencyID, "add", amount, balance)); @@ -71,6 +77,8 @@ public abstract class CurrencyAPI { return; } double balance = data.getPlayerCurrency(currencyID) - amount; + CurrencyChangeEvent event = new CurrencyChangeEvent(uuid, currencyID, data.getPlayerCurrency(currencyID), balance); + Bukkit.getScheduler().runTaskAsynchronously(HamsterCurrency.getInstance(), () -> Bukkit.getPluginManager().callEvent(event)); data.setPlayerCurrency(currencyID, balance); dataManager.savePlayerData(data); dataManager.insertLog(new CurrencyLog(uuid, data.getPlayerName(), currencyID, "take", amount, balance)); diff --git a/currency-plugin/src/main/java/cn/hamster3/currency/event/CurrencyChangeEvent.java b/currency-plugin/src/main/java/cn/hamster3/currency/event/CurrencyChangeEvent.java new file mode 100644 index 0000000..f3d3571 --- /dev/null +++ b/currency-plugin/src/main/java/cn/hamster3/currency/event/CurrencyChangeEvent.java @@ -0,0 +1,53 @@ +package cn.hamster3.currency.event; + +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +import java.util.UUID; + +@SuppressWarnings("unused") +public class CurrencyChangeEvent extends Event { + private static final HandlerList handlerList = new HandlerList(); + @NotNull + private final UUID playerUUID; + @NotNull + private final String currencyID; + private final double oldAmount; + private final double newAmount; + + public CurrencyChangeEvent(@NotNull UUID playerUUID, @NotNull String currencyID, double oldAmount, double newAmount) { + super(true); + this.playerUUID = playerUUID; + this.currencyID = currencyID; + this.oldAmount = oldAmount; + this.newAmount = newAmount; + } + + public static HandlerList getHandlerList() { + return handlerList; + } + + @NotNull + public UUID getPlayerUUID() { + return playerUUID; + } + + @NotNull + public String getCurrencyID() { + return currencyID; + } + + public double getOldAmount() { + return oldAmount; + } + + public double getNewAmount() { + return newAmount; + } + + @Override + public HandlerList getHandlers() { + return handlerList; + } +}